小結STL之std::vector


Vector 就是一個高級的數組(不定長數組,不用擔心數組大小問題)

1.Vector的創建

  包含頭文件 #include<vector> // 每個stl都需要對應的頭文件

  然后命名空間是std 即 using std::vector //或者定義所有 using namespace std:

 

//第一種:不傳參數
vector<int> vint;
vector<char> vchar;
vector<string> vstring;

//注意這個用法:開一個大小為5 每個值為默認值的vector
//第二種:傳一個參數 相當於開辟了一個數組 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;

2.vector的迭代器iterator的定義

  也可以直接用auto

//迭代器定義
//begin() end() rbegin() rend() 正向和反向迭代器
std::vector<int>::iterator itint=vint6.begin();                                                                                                        
std::vector<char>::iterator itchar=vchar6.begin();
std::vector<string>::iterator itstring=vstring.end();
itint =vint6.end();
itchar = vchar.end();
itstring=vstring.end();
std::vector<int>::reverse_iterator ritint =vint6.rbegin();
std::vector<char>::reverse_iterator ritchar = vchar.rbegin();
std::vector<string>::reverse_iterator ritstring=vstring.rbegin();
ritint = vint6.rend();
ritchar = vchar6.rend();
ritstring=vstring.rend();

//cbegin() cend() crbegin() crend() const正向和反向迭代器
std::vector<int>::const_iterator citint=vint6.cbegin();
std::vector<char>::const_iterator citchar=vchar6.cbegin();
std::vector<string>::const_iterator citstring=vstring6.cbegin();
citint=vint6.cend();
citchar=vchar6.cend();
citstring=vstring.cend();
//const_reverse 的迭代器
std::vector<int>::const_reverse_iterator critint;
std::vector<char>::const_reverse_iterator critchar;
std::vector<string>::const_reverse_iterator critstring;
critint=vint6.crbegin();
critchar=vchar6.crbegin();
critstring=vstring6.crbegin();
critint=vint6.crend();
critchar=vchar6.crend();
critstring=vstring6.crend();

3.有關size的操作

//用來描述大小的一系列函數
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();//將容器的大小收縮至於元素個數相同的大小

4.有關元素的操作

//關於元素存取的函數
//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);//類似於尾插

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM