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 }

 打印結果:

 

 

 

 

 

 

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM