STL—— 容器(vector)的数据插入之 insert()

vector 容器可以使用 vectorName.insert() 方法插入元素,vectorName.insert() 函数一共有4种重载方法:

第一种 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     cout << "==========遍历容器===========" << endl;
12 
13     for (int i = 0; i < num.size(); i++)
14     {
15         cout << num.at(i) << endl;
16     }
17 
18     num.insert(num.begin(), 888);           //初始位置插入 888 ,第一个参数需使用迭代器来确认插入位置
19 
20     cout << "===使用 insert() 后遍历容器===" << endl;
21 
22     for (int i = 0; i < num.size(); i++)
23     {
24         cout << num.at(i) << endl;
25     }
26 
27     return 0;
28 }

打印结果:

 由于第一个参数是迭代器,由于是地址,我们也可以对其进行地址加减操作进行元素插入,比如在第二个元素后插入元素,我们用 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     cout << "==========遍历容器===========" << endl;
12 
13     for (int i = 0; i < num.size(); i++)
14     {
15         cout << num.at(i) << endl;
16     }
17 
18     num.insert(num.begin() + 2, 888);           //初始位置插入 888 ,第一个参数需使用迭代器来确认插入位置
19 
20     cout << "===使用 insert() 后遍历容器===" << endl;
21 
22     for (int i = 0; i < num.size(); i++)
23     {
24         cout << num.at(i) << endl;
25     }
26 
27     return 0;
28 }

 打印结果:

第二种 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     cout << "==========遍历容器===========" << endl;
12 
13     for (int i = 0; i < num.size(); i++)
14     {
15         cout << num.at(i) << endl;
16     }
17 
18     num.insert(num.begin(), 3, 888);           //初始位置插入3个 888 ,第一个参数需使用迭代器来确认插入位置
19 
20     cout << "===使用 insert() 后遍历容器===" << endl;
21 
22     for (int i = 0; i < num.size(); i++)
23     {
24         cout << num.at(i) << endl;
25     }
26 
27     return 0;
28 }

打印结果:

 与第一种用法一样,由于第一个参数是迭代器地址,可以通过地址加减控制插入位置。

第三种 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     vector<int>num_1(test + 2, test + 4);
11 
12     cout << "==========遍历容器===========" << endl;
13 
14     for (int i = 0; i < num.size(); i++)
15     {
16         cout << num.at(i) << endl;
17     }
18 
19     num.insert(num.begin(), num_1.begin(), num_1.end());      //初始位置插入  从 begin 到 end 的元素
20 
21     cout << "===使用 insert() 后遍历容器===" << endl;
22 
23     for (int i = 0; i < num.size(); i++)
24     {
25         cout << num.at(i) << endl;
26     }
27 
28     return 0;
29 }

 打印结果:

===========================================================================================================================

猜你喜欢

转载自www.cnblogs.com/CooCoChoco/p/12710034.html
今日推荐