C 提高程式設計 3 2 vector容器

2021-10-21 06:24:25 字數 3623 閱讀 6752

3.2.1 vector基本概念

功能:

vector與普通陣列區別:

動態擴充套件:

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-wnjcge4s-1615014786757)(assets/clip_image002.jpg)]

3.2.2 vector建構函式

功能描述:

函式原型:

示例:

#include void printvector(vector& v) 

cout << endl;

}void test01()

printvector(v1);

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

printvector(v2);

vectorv3(10, 100);

printvector(v3);

vectorv4(v3);

printvector(v4);

}int main()

**總結:**vector的多種構造方式沒有可比性,靈活使用即可

3.2.3 vector賦值操作

功能描述:

函式原型:

示例:

#include void printvector(vector& v) 

cout << endl;

}//賦值操作

void test01()

printvector(v1);

vectorv2;

v2 = v1;

printvector(v2);

vectorv3;

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

printvector(v3);

vectorv4;

v4.assign(10, 100);

printvector(v4);

}int main()

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

3.2.4 vector容量和大小

功能描述:

函式原型:

示例:

#include void printvector(vector& v) 

cout << endl;

}void test01()

printvector(v1);

if (v1.empty())

else

//resize 重新指定大小 ,若指定的更大,預設用0填充新位置,可以利用過載版本替換預設填充

v1.resize(15,10);

printvector(v1);

//resize 重新指定大小 ,若指定的更小,超出部分元素被刪除

v1.resize(5);

printvector(v1);

}int main()

總結:

3.2.5 vector插入和刪除

功能描述:

函式原型:

示例:

#include void printvector(vector& v) 

cout << endl;

}//插入和刪除

void test01()

int main()

總結:

3.2.6 vector資料訪問

功能描述:

函式原型:

示例:

#include void test01()

for (int i = 0; i < v1.size(); i++)

cout << endl;

for (int i = 0; i < v1.size(); i++)

cout << endl;

cout << "v1的第乙個元素為: " << v1.front() << endl;

cout << "v1的最後乙個元素為: " << v1.back() << endl;

}int main()

總結:

3.2.7 vector互換容器

功能描述:

函式原型:

示例:

#include void printvector(vector& v) 

cout << endl;

}void test01()

printvector(v1);

vectorv2;

for (int i = 10; i > 0; i--)

printvector(v2);

//互換容器

cout << "互換後" << endl;

v1.swap(v2);

printvector(v1);

printvector(v2);

}void test02()

cout << "v的容量為:" << v.capacity() << endl;

cout << "v的大小為:" << v.size() << endl;

v.resize(3);

cout << "v的容量為:" << v.capacity() << endl;

cout << "v的大小為:" << v.size() << endl;

//收縮記憶體

vector(v).swap(v); //匿名物件

cout << "v的容量為:" << v.capacity() << endl;

cout << "v的大小為:" << v.size() << endl;

}int main()

總結:swap可以使兩個容器互換,可以達到實用的收縮記憶體效果

3.2.8 vector預留空間

功能描述:

函式原型:

示例:

#include void test01()

} cout << "num:" << num << endl;

}int main()

總結:如果資料量較大,可以一開始利用reserve預留空間

提高Vector容器的刪除效率

vector容器是類似與乙個線性陣列,索引效率高,插入,刪除的效率很低,需要遍歷資料列表,一般情況下vector的刪除操作由一下函式完成 iterator erase iterator position 刪除乙個位置iterator erase iterator first,iterator las...

C 容器vector 理解

通過設定一些模版類,stl容器對最常用的資料結構提供了支援,這些模板的引數允許我們指定容器中元素的資料型別,可以將我們許多重複而乏味的工作簡化。與string 類一樣vector 類是隨標準c 引入的標準庫的一部,為了使用vector 我們必須包含相關的標頭檔案。向量 vector 連續儲存的元素 ...

C 提高程式設計(2 1) string容器

3.1.1 string基本概念 本質 string和char 區別 特點 string 類內部封裝了很多成員方法 例如 查詢find,拷貝copy,刪除delete 替換replace,插入insert string管理char 所分配的記憶體,不用擔心複製越界和取值越界等,由類內部進行負責 3....