/*在一邊摸索中一邊學習了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...