vector方法和使用

2021-08-19 18:10:37 字數 2496 閱讀 2311

/*在一邊摸索中一邊學習了stl,這裡介紹一些vector的基本用法。*/

#include

#include//向量標頭檔案

#include//演算法,提供一下函式

using std::cin;

using std::cout;

using std::endl;

using std::vector;//vector在std的命名空間

bool compare(int a, int b);

int main()

;//賦初始值為1,2,3,4,5

vectorvec1();

vectorvec2(vec1);//相當於:vectorvec2=vec1;

vectorvec3(10, 2);//構造大小為10的容器 全部初始化為2

vectorvec4(10);//構造大小為10的容器 不初始化

vec.push_back(6);//從後面插入乙個數

for(int i = 0; i < 10; i++)

//2.訪問:

cout << vec[2] << endl;//3   直接通過下標訪問

cout << vec[0] + 2 << endl;//3   通過偏移量的方式訪問

//3.迭代器:

遍歷vector::iterator it;//定義迭代器變數it

//for (vector::iterator it = vec.begin(); it != vec.end(); it++)

for (it = vec.begin(); it != vec.end(); it++)

cout << endl;

for (auto i = vec1.begin(); i != vec1.end(); i++)//也可以用auto自動識別型別,begin()返回第乙個元素的迭代器,end() 返回的最後乙個元素後面位置的迭代器 (超尾迭代器)

cout << endl;

for (auto s:vec3)//c11的新用法

cout << endl;

//vectorreverse_iterator ;//反向迭代器型別

for (auto it2 = vec2.rbegin(); it2 != vec2.rend(); it2++)//反向迭代器

cout << endl;

//4.插入:

vec.insert(vec.begin(), 6);//在begin()位置插入(6),612345

vec1.insert(vec1.begin(),5,6);//在begin()位置插入10個(6),6666654321

vec2.insert(vec2.begin()+2, vec2.begin()+3,vec2.end());//在begin()+2(第二個位置之後)插入區間vec2.begin()+3到vec2.end()資料,5421321

// warning,區間最好不要是vec2內部的區間,有些版本的vs或者編譯器可能出錯

//5.刪除:

vec.erase(vec.begin());//刪除指定第乙個元素

vec.erase(vec1.begin()+2,vec1.end());//刪除區間元素

vec.clear();//刪除全部元素,相當於:vec.erase(vec.begin(),vec.end());

函式:vec.at(3);//*(vec.begin()+3)   //會檢查是否越界 越界會引發異常

//7.排序:

sort(vec.begin(), vec.end());//沒第三個引數預設公升序排序,內部其實是使用快排的方法,時間複雜度為n*log2(n),執行效率較高!

sort(vec.begin(), vec.end(), compare);//從大到小排序,加上compare,在這裡就不需要對compare函式傳入引數了,這是規則

stable_sort(vec.begin(), vec.end());

//這個函式和sort的用法一樣,而和sort的區別是,帶有stable的函式可保證相等元素的原本相對次序在排序後保持不變。或許你會問,既然相等,你還管他相對位置呢,也分不清 楚誰是誰了?這裡需要弄清楚乙個問題,這裡的相等,是指你提供的函式表示兩個元素相等,並不一定是一摸一樣的元素。

//8.反**

reverse(vec.begin(), vec.end());//反轉   12345-->54321

reverse(vec.rbegin(), vec.rend()); 

函式:vec.size();//返回當前容器的大小

函式:vec.capacity();//返回當前容器的容量,即元素個數

函式:vec.resize(10);//為向量指定乙個新容量

//12.交換

swap(vec, vec1);//交換兩個向量的元素

cin.get();

return 0;

}bool compare(int a, int b)//實現sort函式從大到小排序第三個引數的函式實現

vector使用方法

在c 中,vector是乙個十分有用的容器,下面對這個容器做一下總結。1 基本操作 1 標頭檔案 include.2 建立vector物件,vectorvec 3 尾部插入數字 vec.push back a 4 使用下標訪問元素,cout vector iterator it for it vec...

vector使用方法

vector是一種可存放任意型別 型別宣告時指定 自行擴充套件 加倍方式 連續儲存的容器,類似於可存放任意型別動態陣列。include 有時需要用到演算法庫 includevector的元素型別不僅僅可以是int,double,string,還可以是結構體,但是要注意,結構體要定義為全域性的,否則會...

vector常用使用方法

今天晚上我終於認真學習了一遍vector,即動態陣列 寫下這篇東西,方便日後翻閱。include include 標頭檔案 using namespace std vector a d定義 vector b 10 宣告乙個初始大小為10的vector vector c 10,5 宣告乙個初始大小為1...