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. }  



原文地址:https://www.cnblogs.com/linux-wang/p/8142767.html