vector容器是陣列的乙個泛化推廣,不僅可以像陣列那樣進行元素的隨機訪問,還可以在容器的尾端插入新元素,實現了random access container和back insertion sequence概念。vector具有自動的記憶體管理功能,對於元素的插入和刪除,能夠動態調整占用的記憶體空間。
有多種方式
(1) vector(consta&a=a())
建立乙個空的vector物件,a是記憶體分配器,此引數可以省略,相當於乙個vector()的呼叫,如:
vector
v;
(2) vector(size_type n)
建立乙個具有n個元素的vector物件,每個vector元素具有對應型別下的預設值,且n個vector元素的記憶體空間已被分配,如:
vector
v(10);//每個元素的預設值為0.0
(3) vector(size_type n,const t&value)
建立乙個具有n個元素的vector物件,每個元素具有初始值valuevector v(10,9.9); vector(const vector&)
通過拷貝乙個vector物件的各個元素值,建立乙個新的vector物件。如:
vector
v1(10,』c』);
vector
v2(v1)
(5) vector(const inputiterator first, const inputiterator last,const a&a=a())
inputiterator為輸入迭代器,通過拷貝迭代區間[first,last),如:
int iarray=;
vector
v(iarray,iarray+5);
利用vector提供的push_back函式進行vector容器的初始化。如:
vector
v;v.push_back(10);
vector的元素可以通過陣列或者迭代器的方式進行遍歷訪問。
利用陣列方式訪問vector元素:
#include
#include
using
namespace
std;
int main()
#include
#include
using
namespace
std;
int main()
push_back()在vector容器的尾部新增元素,insert函式可以在任意位置插入元素。
#include
#include
using
namespace
std;
int main()
erase函式用來刪除迭代器pos所指的元素或者迭代器區間[first,last)的所有元素,原型如下:
iterator erase(iterator pos);
iterator erase(iterator first,iterator last);
例子:
#include
#include
using
namespace
std;
class myanimal
~myanimal(){}
};int main()
利用vector的反向迭代器reverse_itrator以及相應的rbegin和rend函式可以反向遍歷vector容器的元素。
#include
#include
using
namespace
std;
int main()
利用swap演算法,實現兩個vector容器元素的交換,其原型如下:
void swap(vector &)
例:
判斷是否為空
size_type size()
實際元素個數
size_type max_size()
系統所允許的vector容器的最大元素個數
size_type capacity()
當前可以容納的vector元素的個數,reserve函式可以調整資料空間大小
reference front()
容器首元素的引用
reference back()
容器的末尾元素的引用
void pop_back()
與push_back相反,pop_back用於刪除末尾的乙個元素
Vector向量容器
vector向量容器優點 1 vector向量容器不但能像陣列一樣對元素進行隨機訪問,還能在尾部插入元素,是一種簡單 高效的容器,完全可以取代陣列。2 vector向量容器具有記憶體自動管理的功能,對於元素的插入和刪除,可動態調整所佔的記憶體空間。3 對於vector容器的容量定義,可以事先定義乙個...
vector向量容器
vector向量容器 include include vector向量容器標頭檔案 include c語言標頭檔案 include 使用sort演算法 using namespace std bool comp int a,int b 自定義函式從大到小排序 int main cin x v.ins...
Vector(向量容器)
vector是乙個線性順序結構。相當於陣列,但其大小可以不預定指定,並且自動擴充套件。它可以像陣列一樣被操作,由於它的特性我們完全可以將vector看作動態陣列。在使用它時,需要包含標頭檔案include。在建立乙個vector後,它會自動在記憶體中分配一塊連續的記憶體空間進行資料儲存,初始的空間大...