1.std::vector
在末尾插入刪除時間固定
在中間插入刪除時間隨數組大小而異
包含頭文件<vector>
2.vector 初始化
std::vector <int> a;
std::vector <int> b(10);//大小是10
std::vector <int> c(10, 3);//是個元素,每個是3
std::vector <int> d(c);
std::vector <int> e(d.begin(), d.begin()+3);
3.插入數據
std::vector <int> a;
a.push_back(2);
a.push_back(3);
std::vector <int> b(3);
b[0] = 0;
b[1] = 3;
b[2] = 5;
vector <int> c(4, 90);
c.insert(c.begin(), 25);//把25插入到第一個位置,剩下的所有元素後移
c.insert(c.end(), 2, 33);//在最後連續插入兩個33
vector <int> d(2, 30);
d.insert(d.begin()+1, c.begin(); c.end());//在d的開始位置向後一個的地方,插入c從開始到最後的元素
4.訪問vector元素
vector <int> a;
a.push_back(2);
a.push_back(3);
a.push_back(4);
cout << a[2] << endl;
用這種方法可能會出現數組越界的問題,可以用at函數來代替
a.at(2);
vector <int>::iterator i = a.begin();
size_t c = distance(i, a.end());//計算從i到結尾的距離
5.刪除vector
vector <int> a(3, 4);
a.pop_back();//從結尾刪除一個元素
6.size capacity
size指的是vector中元素的個數,然而capacity指的是vector中最大可以保存的元素的個數。
由於vector是動態的,所以當插入的數據vector保存不下時,vector就會重新分配一塊更大的內存來保存整個數組。如果vector變動比較頻繁,就會導致頻繁的分配內存而帶來性能的影響。所以爲了減少分配內存的次數,vector在增加存儲空間重新分配內存時,會比需求的大小多分配出來一定的空間,來保證下次有新的元素增加的時候,不必去重新分配內存而提高效率。
vector <int> a(5,4);
a.size();//5
a.capacity();//5
a.push_back(1);
a.size();//6
a.capacity();//7
a.push_back(6);
a.size();//7
a.capacity();//7
7.deque
deque和vector很相似,只是它可以在開頭和結尾插入和刪除元素
deque <int> d;
d.push_back(3);
d.push_back(4);
d.push_back(5);
d.push_front(2);
d.push_front(1);
d.pop_back();
d.pop_front();