vector以及array和數組


  1. //比較數組、vector、array  
  2. #include <iostream>  
  3. #include <vector>  
  4. #include <array>  
  5. #include <iomanip>  
  6.   
  7. using namespace std;  
  8.   
  9. int main(void)  
  10. {  
  11.     /*1.構造方式 
  12.     * vector:有多種構造方式,不需要定義元素個數;除常見的初始化方式外,還可以 
  13.     * 通過vector和數組構造新的vector 
  14.     * array:定義時必須指定array的大小,可通過array構造新的array,不可使用數組構造 
  15.     * 數組:定義時必須指定array的大小,使用{}初始化 
  16.     */  
  17.     vector<int> myvector = {1,2,3,4,5};  
  18.     array<int, 5> myarray = {1,2,3,4,5};  
  19.     int myint[5] = { 1, 2, 3, 4, 5 };  
  20.   
  21.     /*2.訪問方式 
  22.     * 三者均可通過下標運算符[]對元素進行操作,vector和array還可以通過at/front/back進行操作   
  23.     */  
  24.     cout << setw(10) << "vector" << setw(10) << "array" << setw(10) << "數組" << endl;  
  25.     for (int i = 0; i < 5; i++)  
  26.     {  
  27.         cout << setw(10) << myvector.at(i) << setw(10) << myarray.at(i) << setw(10) << myint[i] << endl;  
  28.     }  
  29.     /*3.遍歷方式 
  30.     * vector和array還可以通過正向和反向迭代器對元素進行遍歷 
  31.     */  
  32.     cout << "=============正向迭代器遍歷=========="<< endl;  
  33.     for (vector<int>::iterator it = myvector.begin(); it != myvector.end();++it)  
  34.     {  
  35.         cout << *it << endl;  
  36.     }  
  37.     cout << "=============反向迭代器遍歷==========" << endl;  
  38.     for (vector<int>::reverse_iterator it = myvector.rbegin(); it != myvector.rend(); ++it)  
  39.     {  
  40.         cout << *it << endl;  
  41.     }  
  42.     /*4.增刪元素 
  43.     * vector可以通過push_back/pop_back/emplace/emplace_back/insert動態增刪元素 
  44.     * array和數組無法實現動態增刪元素 
  45.     */  
  46.     myvector.push_back(6);  
  47.     myvector.emplace_back(7);  
  48.     vector<int>::iterator it = myvector.end();  
  49.     myvector.insert(it, { 8, 9 });//在尾部插入元素,可通過it改變插入位置,也可以插入多個元素  
  50.     myvector.pop_back();  
  51.     cout << "=============動態增刪元素==========" << endl;  
  52.     for (vector<int>::iterator it = myvector.begin(); it != myvector.end(); ++it)  
  53.     {  
  54.         cout << *it << endl;  
  55.     }  
  56.   
  57.     return 0;  
  58. }  




免責聲明!

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



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