vector 向量容器
2019-11-14 12:19:05
供稿:網友
vector 向量容器不但能像數組一樣對元素進行隨機訪問,還能在尾部插入元素,是一種簡單、高效的容器,完全可以代替數組。頭文件:#include <vector>vector 容器的下標是從0 開始計數的.對于vector 容器的容量定義,可以事先定義一個固定大小,事后, 可以隨時調整其大?。灰部梢允孪炔欢x,隨時使用push_back()方法從尾部擴張元素,通常使用 push_back()對vector 容器在尾部追加新元素。尾部追加元素,vector 容器會 自動分配新內存空間。可對空的vector 對象擴張,也可對已有元素的vector 對象擴張。例如::vector<int> v; v.push_back(2);insert()在某個元素位置前插入新元素。insert()方法可以在vector 對象的任意位置前插入一個新的元素,同時,vector 自動擴 張一個元素空間,插入位置后的所有元素依次向后挪動一個位置。 要注意的是,insert()方法要求插入的位置,是元素的迭代器位置,而不是元素的下標vector<int> v(3);v[0]=2;v[1]=7;v[2]=9;//在最前面插入新元素,元素值為8v.insert(v.begin(),8);//在第2 個元素前插入新元素1v.insert(v.begin()+2,1);//在向量末尾追加新元素3v.insert(v.end(),3);//定義迭代器變量vector<int>::iterator it;for(it=v.begin();it!=v.end();it++){//輸出迭代器上的元素值cout<<*it<<" ";}//換行輸出:8 2 1 7 9 3元素的刪除:erase()方法: 可以刪除vector 中迭代器所指的一個元素或一段區間中的所有元素。clear()方法: 則一次性刪除vector 中的所有元素。#include <vector>#include <iostream>using namespace std;int main(){ vector<int> v(10); for(int i=0; i<10; i++) { v[i]=i; }//刪除下標是2 個元素,從0 開始計數 v.erase(v.begin()+2);//定義迭代器變量 vector<int>::iterator it; for(it=v.begin(); it!=v.end(); it++) {//輸出迭代器上的元素值 cout<<*it<<" "; }//換行 cout<<endl;//刪除迭代器第1 到第5 區間的所有元素 v.erase(v.begin()+1,v.begin()+5); for(it=v.begin(); it!=v.end(); it++) {//輸出迭代器上的元素值 cout<<*it<<" "; }//換行 cout<<endl;//清空向量 v.clear(); cout<<v.size()<<endl; return 0;}運行結果:0 1 3 4 5 6 7 8 90 6 7 8 90兩個重要的方法:begin():返回的是首元素位置的迭代器end():返回的是最后一個元素的下一元素位置的迭代器創建vector對象:創建 vector 對象常用的有三種形式。(1)不指定容器的元素個數,如定義一個用來存儲整型的容器:vector<int> v;(2)創建時,指定容器的大小,如定義一個用來存儲10 個double 類型元素的向量容器:vector<double> v(10);注意,元素的下標為 0~9;另外,每個元素的值被初始化為0.0。(3)創建一個具有n 個元素的向量容器對象,每個元素具有指定的初始值:vector<double> v(10,8.6);上述語句定義了 v 向量容器,共有10 個元素,每個元素的值是8.6。訪問:1.利用下標既可訪問也可賦值這點類似于數組的訪問方式。vector<int> v(3);v[0]=2;v[1]=7;v[2]=9;cout<<v[0]<<" "<<v[1]<<" "<<v[2]<<endl;2.也可以使用迭代器迭代器的類型一定要與它 要遍歷的vector 對象的元素類型一致。vector<int> v(3);v[0]=2;v[1]=7;v[2]=9;//定義迭代器變量vector<int>::iterator it;for(it=v.begin();it!=v.end();it++) //注意:這里的it只能用it++,不可用it+=1;{//輸出迭代器上的元素值cout<<*it<<" ";}使用reverse 反向排列算法reverse 反向排列算法,需要定義頭文件“#include <algorithm>”,//反向排列向量的從首到尾間的元素reverse(v.begin(),v.end());輸出:9 8 7 6 5 4 3 2 1 使用sort 算法對向量元素排序使用 sort 算法,需要聲明頭文件“#include <algorithm>”。//排序,升序排列sort(v.begin(),v.end());//自己設計排序比較函數:對元素的值進行降序排列bool Comp(const int &a,const int &b){if(a!=b)return a>b;else return a>b;}//按Comp 函數比較規則排序sort(v.begin(),v.end(),Comp);向量的大小:使用 size()方法可以返回向量的大小,即元素的個數。使用 empty()方法返回向量是否為空。//輸出向量的大小,即包含了多少個元素cout<<v.size()<<endl;//輸出向量是否為空,如果非空,則返回邏輯假,即0,否則返回邏輯真,即1cout<<v.empty()<<endl;