vector向量容器
一、vector向量容器
簡(jiǎn)介:
Vector向量容器可以簡(jiǎn)單的理解為一個(gè)數(shù)組,它的下標(biāo)也是從0開(kāi)始的,使用時(shí)可以不用確定大小,但是它可以對(duì)于元素的插入和刪除,可以進(jìn)行動(dòng)態(tài)調(diào)整所占用的內(nèi)存空間,它里面有很多系統(tǒng)已經(jīng)定義好了的函數(shù)方法,可以直接調(diào)用進(jìn)行插入元素與在尾部擴(kuò)張?jiān)亍?/h5>
函數(shù)方法總結(jié):
1,尾部元素?cái)U(kuò)張 push_back()
2,返回首元素位置的迭代器 begin();
3,返回最后一個(gè)元素的下一元素位置的迭代器 end();
4,元素的插入 insert();
5,元素的刪除
?刪除vector中迭代器所指的一個(gè)元素或一段區(qū)間中的所有元素 erase();
?一次性刪除vector中的所有元素 clear();
6,反向排列reverse
7,sort()對(duì)向量元素排序
8,反向排序(使用時(shí)需要在頭文件進(jìn)行聲明#include < algorithm >) reverse();
9,對(duì)向量元素進(jìn)行排序(默認(rèn)為升序排列)(使用時(shí)需要在頭文件進(jìn)行聲明#include < algorithm >) sort();
10,向量大小size();
11,判斷向量是否為空empty();
Vector向量容器的用法:
①使用Vector向量容器,需要在頭文件聲明 #include< vector >
②創(chuàng)建vector對(duì)象的三種形式
ⅰ vector< int >v; //存儲(chǔ)整形的容器v
ⅱ vector< double >v(10); //存儲(chǔ)10個(gè)double類(lèi)型的向量容器,這里的每一個(gè)元素都為0
ⅲ vector< double >v(10,12.02); //存儲(chǔ)10個(gè)double類(lèi)型的向量容器, 每個(gè)值都為12.02
③使用迭代器進(jìn)行遍歷
vector::iterator it; //定義迭代器變量it
for(it=v.begin();it!=v.end();it++) //從首元素到最后一個(gè)元素的下一個(gè)元素位置結(jié)束
{
cout << *it << endl;//將這10個(gè)double類(lèi)型的元素輸出出來(lái)
}
1,for循環(huán)遍歷訪問(wèn)vector元素
#include <iostream> #include<vector> using namespace std; //因?yàn)镃++STL泛型都是定義在std命名空間中,所以,必須在頭文件聲明的最后一句加上這一行int main() {vector<double> v (10,14.12);//定義一個(gè)存儲(chǔ)10個(gè)double類(lèi)型元素的向量容器,其中的每一個(gè)元素都為14.12v[5]=10.14; //對(duì)v[5]進(jìn)行重新賦值v[9]=78.10; //對(duì)v[9]進(jìn)行重新賦值for(int i=0;i<10;i++){cout << v[i] << endl;//將這10個(gè)double類(lèi)型的元素輸出出來(lái)}return 0; }2,用迭代器訪問(wèn)vector元素
#include <iostream> #include<vector> using namespace std;int main() {vector<double> v (10,14.12);//定義一個(gè)存儲(chǔ)10個(gè)double類(lèi)型元素的向量容器,其中的每一個(gè)元素都為14.12v[5]=10.14; //對(duì)v[5]進(jìn)行重新賦值v[9]=78.10;//對(duì)v[9]進(jìn)行重新賦值vector<double>::iterator it; //定義迭代器變量itfor(it=v.begin();it!=v.end();it++) //從首元素到最后一個(gè)元素的下一個(gè)元素位置結(jié)束{cout << *it << endl;//將這10個(gè)double類(lèi)型的元素輸出出來(lái)}return 0; }//這里我有個(gè)疑問(wèn),最后輸出的v[9],是78.1,而不是78.10。我也不知道為啥~~~3,一些函數(shù)方法的使用
#include <iostream> #include<vector> using namespace std;int main() {vector<double> v (10,14.12);//定義一個(gè)存儲(chǔ)10個(gè)double類(lèi)型元素的向量容器,其中的每一個(gè)元素都為14.12v[5]=10.14; //對(duì)v[5]進(jìn)行重新賦值v[9]=78.10;//對(duì)v[9]進(jìn)行重新賦值vector<double>::iterator it; //定義迭代器變量itfor(it=v.begin();it!=v.end();it++) //從首元素到最后一個(gè)元素的下一個(gè)元素位置結(jié)束{cout << *it << endl;//將這10個(gè)double類(lèi)型的元素輸出出來(lái)}cout<<endl;v.push_back(2);//將2這個(gè)元素從尾部添加到v向量容器中去v.push_back(5);//將5這個(gè)元素從尾部添加到v向量容器中去v.insert(v.begin(),8);//在v向量容器的最前面加入一個(gè)新元素8v.insert(v.begin()+2,1);//在第二個(gè)元素前插入新元素1v.insert(v.end(),3);//在v向量容器末尾追加新元素3for(it=v.begin();it!=v.end();it++) //從首元素到最后一個(gè)元素的下一個(gè)元素位置結(jié)束{cout << *it << endl;//將這10個(gè)double類(lèi)型的元素輸出出來(lái)}cout<<endl;v.erase(v.begin()+1,v.begin()+5); //元素從0開(kāi)始計(jì)數(shù),將下標(biāo)為1到5元素給刪除掉[1,5)for(it=v.begin();it!=v.end();it++){cout<<*it<<endl;}cout<<endl;v.clear(); //將v這個(gè)向量容器給清空cout<<v.size()<<endl; //輸出v這個(gè)向量容器的大小return 0; }4,reverse反向排序算法
#include <iostream> #include<algorithm> #include<vector> using namespace std;int main() {vector<int>v(10,1); //定義一個(gè)整形的大小為10個(gè)元素且均為1的v向量容器vector<int>::iterator it; //定義迭代器變量itfor(int i=0;i<10;i++) //將v向量容器進(jìn)行重新賦值9~0;{v[i]=i;}reverse(v.begin(),v.end()); //反向排列向量的從首到尾之間的元素for(it=v.begin();it!=v.end();it++) //遍歷輸出v向量容器{cout<<*it<<" ";}cout<<endl;return 0; }5,對(duì)向量容器元素排序(默認(rèn)排序?yàn)樯? sort();
#include <iostream> #include<algorithm> #include<vector> using namespace std; //C++ const 允許指定一個(gè)語(yǔ)義約束,編譯器會(huì)強(qiáng)制實(shí)施這個(gè)約束,允許程序員告訴編譯器某值是保持不變的。如果在編程中確實(shí)有某個(gè)值保持不變,就應(yīng)該明確使用const,這樣可以獲得編譯器的幫助。 bool beyond(const int &a,const int &b)//自己定義比較函數(shù),要求由大到小排序 {if(a!=b)return a>b; //如果a,b不相等的話返回a和b之間的最大值else return a<b; //否則返回a和b之間的最小值 }int main() {vector<int>v(10,1); //定義一個(gè)整形的大小為10個(gè)元素且均為1的v向量容器vector<int>::iterator it; //定義迭代器變量itfor(int i=0;i<10;i++) //將v向量容器進(jìn)行重新賦值9~0;{v[i]=i;}sort(v.begin(),v.end()); //sort函數(shù)方法默認(rèn)情況下對(duì)向量容器進(jìn)行升序排列for(int j=0;j<10;j++){cout<<v[j]<<" ";}cout<<endl;sort(v.begin(),v.end(),beyond); //自己定義sort()排序方式for(int k=0;k<10;k++){cout<<v[k]<<" ";}cout<<endl;return 0; }總結(jié)
以上是生活随笔為你收集整理的vector向量容器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 1.创建单项链表
- 下一篇: set和multiset集合容器