c++的vector容器
生活随笔
收集整理的這篇文章主要介紹了
c++的vector容器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
vector容器概念
vector容器注意事項
所謂動態增加大小,并不是再原空間之后續新空間(因為無法保證原空間之后尚有可配置的空間),而是一塊更大的內存空間,然后將原數據拷貝空間,并釋放原空間。因此,對vector的任何操作,一旦引起空間的重新配置,指向vector所有迭代器就都失效了。
vector構造函數
vector賦值操作
vector大小操作
vector數據存取操作
vector插入和刪除操作
#include<iostream> #include<vector> #include<string> #include<list> using namespace std;void test01() {vector<int>v;for (int i = 0; i < 10; i++){v.push_back(i);cout << v.capacity() << endl;//v.capacity()容器的容量}}/**/void printVector(vector<int>&v) {for (vector<int>::iterator it = v.begin(); it != v.end(); it++){cout << *it << " ";}cout << endl;}void test02() {vector<int >v;int arr[] = { 2, 3, 4, 1, 9 };vector<int>v1(arr, arr + sizeof(arr) / sizeof(int));vector<int >v2(v1.begin(), v1.end());printVector(v2);vector<int>v3(10, 100);printVector(v3);//賦值使用vector<int>v4;v4.assign(v3.begin(), v3.end());printVector(v4);v4.swap(v2);cout << "交換后的v4" << endl;printVector(v4);cout << "v4容器的大小" << v4.size() << endl;if (v4.empty()){cout << "v4空" << endl;}else{cout << "v4不空" << endl;}///v4 23419v4.resize(10,-1);//第二個參數是默認值,默認0printVector(v4);v4.resize(3);printVector(v4); }//巧用swap收縮空間 void test03() {vector<int >v;for (int i = 0; i < 100000; i++){v.push_back(i);}cout << "v的容量" << v.capacity() << endl;cout << "v的大小" << v.size() << endl;v.resize(3);cout << "v的容量" << v.capacity() << endl;cout << "v的大小" << v.size() << endl;//巧用swapvector<int>(v).swap(v);cout << "v的容量" << v.capacity() << endl;cout << "v的大小" << v.size() << endl;} //reserve(int len).//容器預留len個元素長度,預留位置不初始化,元素不可訪問void test04() {vector<int>v;v.reserve(100000);//預留出空間int *p = NULL;int num = 0;for (int i = 0; i < 100000; i++){v.push_back(i);if (p != &v[0]){p = &v[0];num++;}}cout << num << endl;//開辟100000數據用了多少次 }void test05() {vector<int >v;v.push_back(10);v.push_back(20);v.push_back(30);v.push_back(50);cout << "v的front" << v.front() << endl;cout << "v的front" << v.back() << endl;v.insert(v.begin(), 2,100);//參數1 迭代器 參數2 個數n 參數3 具體插入的內容printVector(v);v.pop_back();//尾刪printVector(v);v.erase(v.begin());//刪除printVector(v);//v.erase(v.begin(), v.end());v.clear();//清空所有數據if (v.empty()){cout << "為空" << endl;}}void test06() {//逆序遍歷vector<int>v;for (int i = 0; i < 10; i++){v.push_back(i);}printVector(v);//reverse_iterator 逆序的迭代器for (vector<int>::reverse_iterator it = v.rbegin(); it != v.rend(); it++){cout << *it << " ";}cout << endl;//vector迭代器是隨機訪問的迭代器 支持跳躍式訪問vector<int>::iterator itBegin = v.begin();itBegin = itBegin + 3;//如果上述寫法不報錯,這個迭代器是隨機訪問迭代器list<int>l;for (int i = 0; i < 10; i++){l.push_back(i);}list<int>::iterator lIt = l.begin();//lIt = lIt + 1;//不支持隨機訪問}int main() {//test01();//test02();//test03();//test04();//test05();test06();system("pause");return 0; }總結
以上是生活随笔為你收集整理的c++的vector容器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不能忘却的使命剧情介绍
- 下一篇: c++中的deque容器