參考html
CSDN 頑強的土豆地雷
https://blog.csdn.net/fuxingdecsdn/article/details/80411649 ios
CSDN kinghero123456數組
https://blog.csdn.net/u014378771/article/details/90295900函數
菜鳥教程spa
https://www.runoob.com/w3cnote/cpp-vector-container-analysis.html.net
頭文件指針
#include<vector>
定義code
//第一種:不傳參數 vector<int> vint; vector<char> vchar; vector<string> vstring; //第二種:傳一個參數 至關於開闢了一個數組 vector<int> vint2(5); vector<char> vchar2(5); vector<string> vstring2(5); //第三種:參數一 n個元素,每一個元素的初值 開闢數組並進行初始化 vector<int> vint3(5,0); vector<char> vchar3(5,'a'); vector<string> vstring3(5,"a"); //第四種:傳一段迭代器區間 vector<int> vint4(vint3.begin(),vint3.end()); vector<char> vchar4(vchar3.begin(),vchar3.end()); vector<string> vstring4(vstring3.begin(),vstring3.end()); //第五種:傳一個對象,既拷貝函數 vector<int> vint5(vint3); vector<char> vchar5(vchar3); vector<string> vstring5(vstring3); //第六種:賦值運算符的重載 vector<int> vint6; vector<char> vchar6; vector<string> vstring6; vint6=vint5; vchar6=vchar5; vstring6=vstring5;
在容器最後插入和刪除元素htm
.push_back()對象
.pop_back()
#include <string.h> #include <vector> #include <iostream> using namespace std; int main() { vector<int>obj;//建立一個向量存儲容器 int for(int i=0;i<10;i++) // push_back(elem)在數組最後添加數據 { obj.push_back(i); cout<<obj[i]<<","; } for(int i=0;i<5;i++)//去掉數組最後一個數據 { obj.pop_back(); } cout<<"\n"<<endl; for(int i=0;i<obj.size();i++)//size()容器中實際數據個數 { cout<<obj[i]<<","; } return 0; }
運行結果
0,1,2,3,4,5,6,7,8,9, 0,1,2,3,4,
刪除指定元素
.erase()
#include "stdafx.h" #include "iostream" #include "vector" using namespace std; int main() { vector<int> NumberArray; NumberArray.push_back(1); NumberArray.push_back(1); NumberArray.push_back(2); NumberArray.push_back(2); //查找並刪除指定元素 int iFind = 1; vector<int>::iterator it = find(NumberArray.begin(), NumberArray.end(), iFind); //第一次查找 while (it != NumberArray.end()) //判斷是否找到 { it = NumberArray.erase(it); //找到了刪除 並 移動 it 指向下一個位置 //錯誤寫法: NumberArray.erase(it); it++; //緣由vector中元素被刪除以後it已經失效,不能進行++操做 it = find(it, NumberArray.end(), iFind); //繼續查找 } return 0; }
指定位置插入元素
.insert()
vector<int> temp; //初始化後 temp.insert(temp.begin()+2,9)//在temp的第2位後插入元素9
清除
.clear()
#include <string.h> #include <vector> #include <iostream> using namespace std; int main() { vector<int>obj; for(int i=0;i<10;i++)//push_back(elem)在數組最後添加數據 { obj.push_back(i); cout<<obj[i]<<","; } obj.clear();//清除容器中因此數據 for(int i=0;i<obj.size();i++) { cout<<obj[i]<<endl; } return 0; }
結果
0,1,2,3,4,5,6,7,8,9,
大小
//用來描述大小的一系列函數 vector<int> test(5,1); cout<<test.size()<<endl;//表示順序表的元素個數 cout<<test.capacity()<<endl;//表示順序表的容量 cout<<test.max_size()<<endl;//表示容器的最大存儲,但實際到不了 test.resize(1);//設置大小,能夠開闢出更多的空間,當參數小於時就銷燬空間 test.resize(10,2);//當大於時就開闢並初始化 cout<<test.size()<<endl; test.empty();//用來檢查是否爲空 test.reserve(10);//用來設置容器大小可是並不初始化,元素個數也沒變,變化不可見 test.shrink_to_fit();//將容器的大小收縮至於元素個數相同的大小
排序
#include <string.h> #include <vector> #include <iostream> #include <algorithm> using namespace std; int main() { vector<int>obj; obj.push_back(1); obj.push_back(3); obj.push_back(0); sort(obj.begin(),obj.end());//從小到大 cout<<"從小到大:"<<endl; for(int i=0;i<obj.size();i++) { cout<<obj[i]<<","; } cout<<"\n"<<endl; cout<<"從大到小:"<<endl; reverse(obj.begin(),obj.end());//從大到小 for(int i=0;i<obj.size();i++) { cout<<obj[i]<<","; } return 0; }
結果
從小到大: 0,1,3, 從大到小: 3,1,0,
訪問
//關於元素存取的函數 //operator[] 既重載[]使其相似於數組元素的操縱,實現隨機訪問 cout<<test.at(1)<<endl;//相似於[]的做用,只是是一個函數行形式 cout<<test.front()<<endl;//顯示存在的第一個元素 cout<<test.back()<<endl;//顯示存在的最後一個元素 int* p = test.data();//取到了一個指向順序表的一個指針 cout<<test.front()<<endl;//顯示存在的第一個元素 //修改動做函數 test.assign(arr,arr+3);//assign替換函數能夠替換一個對象的區間或者一個同類型的數組 test.push_back(4);//尾插,並無頭插 test.pop_back();//尾刪 test.insert(it,5);//插入指定位置 test.erase(it);//刪除指定位置 test.swap(test1);//交換函數,將兩個對象進行交換 test.clear();//清空整個順序表 vector<int>::iterator it2=test.emplace(it,5);//相似於insert可是會返回新插入元的迭代器 test.emplace_back(10);//相似於尾插