vector 容器下的 insert() 方法擁有返回值,由於insert() 方法擁有4種重載函數,他的返回值不盡相同。
第一種,插入單個元素后的返回值:
1 #include <iostream> 2 #include <vector> 3 4 using namespace std; 5 6 int main() 7 { 8 int test[] = { 111,222,333,444 }; 9 vector<int>num(test, test + 4); 10 11 vector<int>::iterator it = num.insert(num.begin(), 888); //用一個迭代器類型的 it 來接受 insert() 的返回值 12 13 cout << "===使用一個迭代器類型的 it 遍歷容器===" << endl; 14 15 for (int i = 0; i < num.size(); i++) 16 { 17 cout << *it++ << endl; 18 } 19 20 return 0; 21 }
打印結果:
第二種,插入多個元素后的返回值:
這里可以發現明顯的一點,insert() 的返回值為插入的地址
1 #include <iostream> 2 #include <vector> 3 4 using namespace std; 5 6 int main() 7 { 8 int test[] = { 111,222,333,444 }; 9 vector<int>num(test, test + 4); 10 11 vector<int>::iterator it = num.insert(num.begin()+3, 888); //用一個迭代器類型的 it 來接受 insert() 的返回值 12 13 cout << "===將整個 num 遍歷===" << endl; 14 15 for (int i = 0; i < num.size(); i++) 16 { 17 cout << num[i] << endl; 18 } 19 20 cout << endl << "===使用一個迭代器類型的 it 遍歷容器===" << endl; 21 22 for (int i = 0; i < num.size()-3; i++) 23 { 24 cout << *it++ << endl; 25 } 26 27 return 0; 28 }
打印結果:
因為插入位置是 begin() +3,所以返回值的地址也是 begin() +3。
第三種,使用其他容器的迭代器插入多個元素的返回值:
1 #include <iostream> 2 #include <vector> 3 4 using namespace std; 5 6 int main() 7 { 8 int test[] = { 111,222,333,444 }; 9 vector<int>num(test, test + 4); 10 vector<int>num_1(test + 2, test + 4); 11 12 vector<int>::iterator it = num.insert(num.begin(), num_1.begin(), num_1.end()); //用一個迭代器類型的 it 來接受 insert() 的返回值 13 14 cout << "===使用一個迭代器類型的 it 遍歷容器===" << endl; 15 16 for (int i = 0; i < num.size(); i++) 17 { 18 cout << *it++ << endl; 19 } 20 21 return 0; 22 }
打印結果:
======================================================================================================================