【C++】vector容器常見用法總結

初始化

vector<int> v1(10); //定義了10個整型元素的向量,<>中式元素的類型名
vector<int> v2(10, 1); //定義了10個整型元素的向量,且每個元素的初值爲1
vector<int> v3(v2); //用v2向量來創建v3向量
vector<int> v4(v2.begin(), v2.begin() + 3); //定義了v4值爲v2中的前三個元素
int v5[5] = { 1,2,3,4,5 };
vector<int> v6(v5, v5 + 5); //從數組中獲得初值

語法

C++ Vectors能夠使用標準運算符: ==, !=, <=, >=, <, 和 >. 要訪問vector中的某特定位置的元素可以使用 [] 操作符

vectors之間大小的比較是按照詞典規則

兩個vectors被認爲是相等的,如果:
    1.  它們具有相同的容量
    2.  所有相同位置的元素相等

常用函數

void push_back(const TYPE &val); //添加值爲val的元素到當前vector末尾
void pop_back(); //刪除當前vector最末的一個元素

TYPE front(); //返回vector的第一個元素的引用
TYPE back(); //返回vector的最後一個元素的引用

iterator begin(); //返回一個指向vector起始元素的迭代器
iterator end(); //返回一個指向vector末尾元素的下一位置的迭代器

size_type size(); //返回當前vector所容納元素的數目
bool empty(); //若vector爲空,返回true;否則,返回false
void clear(); //清空當前vector的所有元素

//返回當前vector指定位置loc的元素的引用,比[]更安全,能夠辨別出是否越界,並在越界時拋出異常
TYPE at( size_type loc );

//賦num個值爲val的元素到vector中,賦值前清空vector
void assign( size_type num, const TYPE &val );
//將區間[start,end)的元素賦值到當前vector,賦值前清空vector
void assign( input_iterator start, input_iterator end );

//刪除指定位置loc的元素,並返回指向刪除的最後元素的下一位置的迭代器
iterator erase( iterator loc );
//刪除區間[start,end)的所有元素,並返回指向刪除的最後元素的下一位置的迭代器
iterator erase( iterator start, iterator end );

//在指定位置loc前插入值爲val的元素,返回指向這個元素的迭代器
iterator insert( iterator loc, const TYPE &val );
//在指定位置loc前插入num個值爲val的元素
void insert( iterator loc, size_type num, const TYPE &val );
//在指定位置loc前插入區間[start,end)的所有元素
void insert( iterator loc, input_iterator start, input_iterator end );

reverse_iterator rbegin(); //返回一個指向vector末尾元素的迭代器
reverse_iterator rend(); //返回一個指向vector起始元素的前一位置的迭代器

//C++11前
//若當前大小大於 count ,則減小容器爲其首 count 個元素
//若當前大小小於 count ,則後附額外元素,並以 value 的副本初始化
void resize( size_type count, T value = T());
//C++11後
//若當前大小大於 count ,則減小容器爲其首 count 個元素
//若當前大小小於 count ,
// 1) 則後附額外的默認插入的元素
// 2) 則後附額外的 value 的副本
void resize( size_type count ); //(1)
void resize( size_type count, const value_type& value ); //(2)

其它相關函數(需要頭文件algorithm)

//去掉vector中重複的元素
sort(v.begin(), v.end());
v.erase(unique(v.begin(), v.end()), v.end());

//C++20前
//反轉 [first, last) 範圍中的元素順序,沒有返回值
template< class BidirIt >
void reverse( BidirIt first, BidirIt last );
例:
reverse(v.begin(),v.end());

//C++20前
//複製 [first, last) 中的元素到始於d_first的另一範圍
//返回指向目標範圍中最後複製元素的下個元素的輸出迭代器
template< class InputIt, class OutputIt >
OutputIt copy( InputIt first, InputIt last, OutputIt d_first );
例:
copy(v.begin(),v,end(),v1.begin());

//C++20前
//返回範圍 [first, last) 中等於value的首個元素
//返回指向首個滿足條件的迭代器,或若找不到這種元素則爲 last
template< class InputIt, class T >
InputIt find( InputIt first, InputIt last, const T& value );
例:
find(v.begin(),v.end(),10);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章