STL學習筆記-vector容器(動態數組)

簡介:
vector是將元素置於一個動態數組中進行管理的容器
vector可以隨機存取元素,支持索引值直接存取,用[]或者at()方法
vector下尾部添加或者刪除元素非常快,但在中間或頭部插入或者刪除元素比較耗時

頭文件:
#include<vector>

vector基本操作:
vector<int> v;
v.push_back(1); // 從尾部插入元素
int b = v.front(); // 獲取頭部元素
int a = v.back(); // 獲取尾部元素
a = v.pop_back(); //彈出並刪除尾部元素
v.size(); //元素長度
v.front() = 11; //修改頭部元素的值
v.back() = 41; //修改尾部元素的值

vector初始化:
vector<int> v;
v.push_back(1); 
v.push_back(3);
 
vector<int> v2 = v;
vector<int> v3(v.begin(), v.end());
vector<int> v4(3);//事先分配3個元素空間,默認初始化爲0
vector<int> v4(3, 9); // 三個元素都是9

vector遍歷:
vector<int> v(10); //當用數組的方式遍歷並且是給vector賦值的時候,必須先分配好空間

 // push_back強化
v.push_back(1); //此時在第11個位置插入,因爲push_back是在尾部插入的
v.push_back(3);//此時在第12個位置插入,因爲push_back是在尾部插入的

//數組方式
for(int i = 0; i < v.size(); i++) {
     v[i] = i + 1;    
}

//迭代器方式-正向迭代
for(vector<int>::iterator it = v.begin(); it != v.end(); it++) {
         cout << *it << " ";
}
//迭代器方式-逆向迭代
for(vector<int>::reverse_iterator rit = v.rbegin(); rit != v.rend(); rit++) {
         cout << *rit << " ";
}

迭代器強化:
1.  v.begin()指向v的第一個元素的位置,v.end()指向的是v最後一個元素的下一個位置
2.  迭代器種類:正向迭代器、逆向迭代器、雙向迭代器、只讀迭代器、、、、

vector刪除和插入:
vector<int> v(10);
for(int i = 0; i < v.size(); i++) {
     v[i] = i + 1;    
}

//根據元素的位置刪除
v.erase(v.begin(), v.begin() + 4); //區間刪除
v.erase(v.begin() + 4); //刪除指定位置單個元素

//根據值刪除
for(vector<int>::iterator it = v.begin(); it != v.end(); ) {
         if( *it == 2) {
             it = v.erase(it); //erase函數會讓迭代器自動下移
         }else {
             it++;
         }
}
//插入
vector<int> v1(2, 7);
v.insert(v.begin()+3, 100);//在某個位置插入100
v.insert(v.begin()+3, 3, 100);//在某個位置插入3個100
v.insert(v.begin()+2, v1.begin(), v1.end()); //在某個位置插入一段數據
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章