
- //比較數組、vector、array
- #include <iostream>
- #include <vector>
- #include <array>
- #include <iomanip>
- using namespace std;
- int main(void)
- {
- /*1.構造方式
- * vector:有多種構造方式,不需要定義元素個數;除常見的初始化方式外,還可以
- * 通過vector和數組構造新的vector
- * array:定義時必須指定array的大小,可通過array構造新的array,不可使用數組構造
- * 數組:定義時必須指定array的大小,使用{}初始化
- */
- vector<int> myvector = {1,2,3,4,5};
- array<int, 5> myarray = {1,2,3,4,5};
- int myint[5] = { 1, 2, 3, 4, 5 };
- /*2.訪問方式
- * 三者均可通過下標運算符[]對元素進行操作,vector和array還可以通過at/front/back進行操作
- */
- cout << setw(10) << "vector" << setw(10) << "array" << setw(10) << "數組" << endl;
- for (int i = 0; i < 5; i++)
- {
- cout << setw(10) << myvector.at(i) << setw(10) << myarray.at(i) << setw(10) << myint[i] << endl;
- }
- /*3.遍歷方式
- * vector和array還可以通過正向和反向迭代器對元素進行遍歷
- */
- cout << "=============正向迭代器遍歷=========="<< endl;
- for (vector<int>::iterator it = myvector.begin(); it != myvector.end();++it)
- {
- cout << *it << endl;
- }
- cout << "=============反向迭代器遍歷==========" << endl;
- for (vector<int>::reverse_iterator it = myvector.rbegin(); it != myvector.rend(); ++it)
- {
- cout << *it << endl;
- }
- /*4.增刪元素
- * vector可以通過push_back/pop_back/emplace/emplace_back/insert動態增刪元素
- * array和數組無法實現動態增刪元素
- */
- myvector.push_back(6);
- myvector.emplace_back(7);
- vector<int>::iterator it = myvector.end();
- myvector.insert(it, { 8, 9 });//在尾部插入元素,可通過it改變插入位置,也可以插入多個元素
- myvector.pop_back();
- cout << "=============動態增刪元素==========" << endl;
- for (vector<int>::iterator it = myvector.begin(); it != myvector.end(); ++it)
- {
- cout << *it << endl;
- }
- return 0;
- }