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 }
打印结果:
======================================================================================================================