C++ vector容器
- **1.描述**
- **2.初始化**
- **3.內置方法**
注:以下v即代表已初始化好的vector容器
1.描述
幾乎可以算是陣列的替代品,不過陣列是靜態空間,vector是動態擴展,但是vector只能從一端操作,也叫單端陣列(所以后面會有一個雙端陣列deque)
注:可以像陣列一樣取得下標位置元素,也可以用其修改
int a=v[0];
v[0]=1;
注:若嵌套也可以像二維陣列一樣使用,但是一定要記得用resize()分配記憶體:
vector<vector<int>> v(10);
v[0].resize(1);
v[0][0]=1;
也有內置方法取得,和[]作用一樣
int a=v.at(0);
2.初始化
- 直接宣告(可以用逗號分隔宣告多個)
vector<T> v;
vector<T> v1,v2;
- 直接宣告并賦予長度
vector<T> v(len);
- 復制vector中任意區間
vector(v.begin(),v.end());
vector<int> v1;
vector<int> v;
v.assign(v1.begin(),v1.end());
- n個elem初始化
vector(n,elem);
vector<int> v;
v.assign(3,4);
- 復制另一個
vector(v);
- 陣列轉vector
int x[3]={1,2,3};
vector<int> v(x,x+3);
- =
vector<int> v2(1,10);
vector<int> v;
v=v2;
注:若寫函式中回傳值為vector,可直接return陣列回傳,如:
vector<int> eg(int a,int b)
{
return {a,b};
}
3.內置方法
- 尾插,無回傳
v.push_back(10);
- 指定迭代器位置插入單個元素,無回傳
v.insert(v.begin(),10);
- 指定迭代器位置插入10個2,無回傳
v.insert(v.begin(),10,2);
- 尾刪,無回傳
v.pop_back();
- 洗掉迭代器位置元素
v.erase(v.begin());
- 洗掉迭代器區間元素
v.erase(v.begin(),v.end());
- 全部清空,無回傳
v.clear();
- 回傳首元素
v.front();
- 回傳尾元素
v.back();
- 判空,返bool
if(v.empty()){
}
- 容器大小(容量)
v.capacity()
- 元素個數
v.size()
- 重指定容器大小,長則默認填充0,或者指定后一個引數為默認,短則削去,無回傳
v.resize(10)
v.resize(10,2)
- 預留空間
v.reverse(100);
- 容器 互換
v1.swap(v2);
注:一般用來收縮記憶體,因為很多時候vector用了其他方法后容量依然沒變,導致記憶體占用過多
vector<int>(v1).swap()v1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/259133.html
標籤:AI
上一篇:C++冒泡排序
