C 模板庫之Vector

2021-08-21 16:44:57 字數 1608 閱讀 1875

vector支援隨機訪問,所以只要你知道元素的位置,你就可以在常量時間裡訪問任何乙個元素。如果是在末端新增或者刪除元素,那麼它的效果是非常好的,但是如何是在前端或者中段新增或刪除元素,那麼它的效率就不怎麼樣了。

vector的容量是至關重要的,因為一旦重新分配記憶體,vector元素相關的reference,pointer,iterator都會失效,此外,重新分配記憶體非常耗時間。我們可以通過reserve()保留適當容量,避免重新分配記憶體。但是,不能通過reserve()縮減容量。既然vector的容量不會縮減,那麼,reference,pointer,iterator也會繼續有效,繼續指向動作前發生的位置。若要縮減容量,可以使用函式 v.shrink_to_fit()。

看一下vector的例項,

#include #include #include #include #include using namespace std;

int main()

); copy(sentence.cbegin(),sentence.cend(),ostream_iterator(cout," "));

cout << endl;

cout << "max_size(): " << sentence.max_size() << endl;

cout << "size(): " << sentence.size() << endl;

cout << "capacity(): " << sentence.capacity() << endl;

swap(sentence[1],sentence[3]);

sentence.insert(find(sentence.begin(),sentence.end(),"?"),"always");

sentence.back() = "!";

copy(sentence.cbegin(),sentence.cend(),ostream_iterator(cout," "));

cout << endl;

cout << "size(): " << sentence.size() << endl;

cout << "capacity(): " << sentence.capacity() << endl;

sentence.pop_back();

sentence.pop_back();

sentence.shrink_to_fit();

cout << "size(): " << sentence.size() << endl;

cout << "capacity(): " << sentence.capacity() << endl;

}

以上程式執行結果:

hello, how are you?

max_size(): 1073741823

size(): 5

capacity(): 5

hello, you are how always!

size(): 6

capacity(): 10

size(): 4

capacity(): 4

max_size()和capacity()的輸出由現實決定。

C 標準模板庫(STL)之vector

vector即長度可變的陣列 標頭檔案宣告 include using namespace std 1.定義 vector int v vectorint age 兩個 之間需加空格,不然會被誤以為是移位操作 vector int vi 100 vector陣列,vi 0 vi 99 每乙個都是乙個...

C 標準模板庫(STL)之 vector

一 vector的常見用法詳解 1.vector的定義 標頭檔案 include 單獨定義乙個vector vectorname 注 如果typename也是乙個stl容器,定義的時候要記得在 符號之間加上空格,因為一些使用c 11之前標準的編譯器會把它視為移位操作,導致編譯錯誤。如果typenam...

C 標準模板庫 vector

include vectorarryname vector int myarray vector myarray2 node 是結構體 vector double myarray3 vectorint array 兩維均可變長的變長二維陣列 之間一定要有空格 否則c11之前認為是向右可能報錯 vec...