C vector資料結構容器常用操作 方法 函式

2021-10-11 16:34:29 字數 1993 閱讀 3943

vector資料結構和陣列非常相似,也稱為單端陣列。

vector與普通陣列區別:

不同之處在於陣列是靜態空間,而vector可以動態擴充套件(所以vector宣告時不用指定大小,只用指定儲存元素的資料型別。)

動態擴充套件並不是在原空間之後續接新空間,而是找更大的記憶體空間,然後將原資料拷貝新空間,並釋放原空間。

vector容器的迭代器是支援隨機訪問的迭代器。

1.vector構造

vector v; //採用模板實現類實現,預設建構函式

vector(v.begin(), v.end()); //將v[begin(), end())區間中的元素拷貝給本身。

vector(n, elem); //建構函式將n個elem拷貝給本身。

vector(const vector &vec); //拷貝建構函式。

eg:

vectorv1; //無參構造

for (int i = 0; i < 10; i++)

vectorv2(v1.begin(), v1.end());

vectorv3(10, 100);

vectorv4(v3);

2.vector賦值

函式原型:

vector& operator=(const vector &vec);//過載等號操作符

assign(beg, end); //將[beg, end)區間中的資料拷貝賦值給本身。

assign(n, elem); //將n個elem拷貝賦值給本身。

vectorv2;

v2 = v1;

vectorv3;

v3.assign(v1.begin(), v1.end());

vectorv4;

v4.assign(10, 100);

vector賦值方式比較簡單,使用operator=,或者assign都可以。

3.vector容器的容量和大小

函式原型:

empty(); //判斷容器是否為空

capacity(); //容器的容量

size(); //返回容器中元素的個數

resize(int num); //重新指定容器的長度為num,若容器變長,則以預設值填充新位置。

//如果容器變短,則末尾超出容器長度的元素被刪除。

resize(int num, elem); //重新指定容器的長度為num,若容器變長,則以elem值填充新位置。

//如果容器變短,則末尾超出容器長度的元素被刪除

4.vector插入和刪除

函式原型:

push_back(ele); //尾部插入元素ele

pop_back(); //刪除最後乙個元素

insert(const_iterator pos, ele); //迭代器指向位置pos插入元素ele

insert(const_iterator pos, int count,ele);//迭代器指向位置pos插入count個元素ele

erase(const_iterator pos); //刪除迭代器指向的元素

erase(const_iterator start, const_iterator end);//刪除迭代器從start到end之間的元素

clear(); //刪除容器中所有元素

5.vector資料訪問

at(int idx); //返回索引idx所指的資料

operator; //返回索引idx所指的資料

front(); //返回容器中第乙個資料元素

back(); //返回容器中最後乙個資料元素

6.其他

swap(vec); // 將vec與本身的元素互換 eg: v1.swap(v2);

reserve(int len);//容器預留len個元素長度,預留位置不初始化,元素不可訪問。

swap可用於收縮記憶體。

reserve可減少vector在動態擴充套件容量時的擴充套件次數,增加執行效率。

資料結構C Vector

資料結構剛開篇就是一種最基礎的儲存結構線性結構,線性結構中每乙個結點都只有乙個前驅後繼 除去首尾 線性結構是邏輯上連續的儲存結構 物理空間上連續儲存的線性結構可以是陣列,動態陣列等 物理空間不連續的線性結構是鍊錶 c stl中的vector 動態陣列 就是乙個線性結構 1.vector 成員的宣告和...

C vector底層資料結構

vector 其底層資料結構是陣列,由於陣列的特點,vector也具有以下特性 1 o 1 時間的快速訪問 2 順序儲存,所以插入到非尾結點位置所需時間複雜度為o n 刪除也一樣 3 擴容規則 當我們新建乙個vector的時候,會首先分配給他一片連續的記憶體空間,如std vector vec,當通...

C vector容器vector資料訪問

c vector容器vector資料訪問 功能描述 函式原型 include include using namespace std void test for int i 0 i size i cout endl for int i 0 i v1.size i cout endl cout v1的...