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...