C++線性序列容器<vector>簡單總結
vector是一個長度可變的數組,使用的時候無須聲明上限,隨着元素的增加,Vector的長度會自動增加;Vector類提供額外的方法來增加、刪除元素,比數組操作高效。
頭文件:#include <vector>
命名空間:using namespace std:vector
構造函數
vector<int>vec_int; // 創建一個整形元素的vector
vector<string>vec_string; // 創建一個string元素的vector
vector<Mystruct>vec_Mystruct; // 創建一個元素是結構的vector
基本維護操作
1.訪問
下標訪問和at()兩種方式,推薦第二種方法,它會進行邊界檢查。
vec_int[1], vec_int.at(1); // 訪問索引為1的元素,第2個元素
int size() const; // 返回向量中的元素個數
bool empty() const; // 判斷向量是否為空,true為空,false為不空
reference back( ); // 返回向量的最后一個元素的引用,可以被修改
reference front( ); // 返回向量的第一個元素的引用,可以被修改
2.添加
void push_back(const T& Val); ; // 在vector末尾處添加一個元素。
3.刪除
void pop_back( ); // 刪除向量末尾處的元素。
void clear(); // 清除向量中的所有元素
4.插入
void insert(iterator it, int count, T& value); // 在迭代器的位置插入指定count數量的value值,count參數可選,默認為1
5.遍歷
常用的使用迭代器遍歷,也非常方便;
iterator begin(); // 返回向量的第一個元素的迭代器
iterator end( ); // 返回向量的最后一個元素的迭代器
遍歷方法:
for (vector<int>::iterator vec_it = vec_int.begin(); vec_it != vec_int.end(); vec_it++) { cout << *vec_it << endl; }
成員函數
assign
|
清除矢量並將指定的元素復制到該空矢量。 |
at | 返回對矢量中指定位置的元素的引用。 |
back | 返回對向量中最后一個元素的引用。 |
begin | 對該向量中第一個元素返回隨機訪問迭代器。 |
capacity | 返回在不分配更多的存儲的情況下向量可以包含的元素數。 |
cbegin | 返回指向向量中第一個元素的隨機訪問常量迭代器。 |
cend | 返回一個隨機訪問常量迭代器,它指向剛超過矢量末尾的位置。 |
crbegin | 返回一個指向反向矢量中第一個元素的常量迭代器。 |
crend | 返回一個指向反向矢量末尾的常量迭代器。 |
clear | 清除向量的元素。 |
data | 返回指向向量中第一個元素的指針。 |
emplace | 將就地構造的元素插入到指定位置的向量中。 |
emplace_back | 將一個就地構造的元素添加到向量末尾。 |
empty | 測試矢量容器是否為空。 |
end | 返回指向矢量末尾的隨機訪問迭代器。 |
erase | 從指定位置刪除向量中的一個元素或一系列元素。 |
front | 返回對向量中第一個元素的引用。 |
get_allocator | 將對象返回到矢量使用的 allocator 類。 |
insert | 將一個元素或多個元素插入到指定位置的向量中。 |
max_size | 返回向量的最大長度。 |
pop_back | 刪除矢量末尾處的元素。 |
push_back | 在矢量末尾處添加一個元素。 |
rbegin | 返回指向反向向量中第一個元素的迭代器。 |
rend | 返回一個指向反向矢量末尾的迭代器。 |
reserve | 保留向量對象的最小存儲長度。 |
resize | 為矢量指定新的大小。 |
shrink_to_fit | 放棄額外容量。 |
size | 返回vector元素個數 |
swap | 交換兩個向量的元素。 |