1. 程式人生 > >vector中常見介面的介紹與使用

vector中常見介面的介紹與使用

迭代器相關

iterator begin();正向迭代器:返回一個迭代器,指向vector物件的第一個元素
iterator end();正向迭代器:返回一個迭代器,指向vector物件最後一個元素的後邊
reverse_iterator rbegin();反向迭代器:返回一個迭代器,指向vector物件最後一個元素
reverse_iterator rend();反向迭代器:返回一個迭代器,指向vector物件的第一個元素的前邊

容量相關

size_t  size ( )  const;獲取當前物件中元素的個數
size_t  max_size ( )  const;獲取當前物件最多可以容納多少個元素,包含還未分配給該物件的空間
size_t  capacity( )  const;獲取當前物件的容量,是已經分配給物件的空間
void  resize( size_t sz, T c = T() );將當前物件的元素個數設定為sz個,sz比size大則預設使用0來填充
bool  empty( )  const;判空,當前物件元素為空(size值為0),返回true,否則返回false
void  reserve( size_t  n);保證當前物件的容量至少為n個

元素獲取

operator[ ]根據下標來訪問元素

const_reference at (size_t  n) const

reference  at (size_t n)

獲取下標為n的位置的元素,作用域 [ ]類似

const_reference front() const

reference  front()

獲取物件的第一個元素

const_reference  back()  const

reference back()

獲取物件的最後一個元素


資料修改

void assign(InputIterator first,InputIterator  last);

void assign(size_t n, const T& u);

將新的內容分配給物件,呼叫前丟棄向量中包含的所有元素後用引數指定的元素替換它們。

第二個版本是將物件裡邊的內容替換成n 個 u

void  push_back(const T& x);尾插,插入元素之前會先檢測是否有插入的空間,如果不夠了會進行擴容
void  pop_back();尾刪,不會改變容量

void  insert ( iterator pos, size_t n,  const T& x);

void  insert (iterator pos,IpIter first,IpIter  last);

指定位置插入,指定的位置必須是用迭代器表示

iterator erase(iterator pos);

iterator  erase(iterator first, iterator  last);

指定位置刪除,指定的位置必須是用迭代器表示
swap()交換兩個物件的內容
clear()q清空物件的元素,即將size設定為0


#include <iostream>
using namespace std;
#include <vector>

void Show(vector<int>& v)
{
	for (int i = 0; i < v.size(); i++)
		cout << v[i] << "  ";
	cout << endl;
}

int main()
{ 
	vector<int> v1;
	for (int i = 0; i < 7; i++)
		v1.push_back(i);
	Show(v1);

	v1.pop_back();
	cout << "pop_back" << endl;
	Show(v1);
	cout << endl;

	vector<int>::iterator it1 = v1.begin();
	cout << "insert" << endl;
	v1.insert(it1, 66);				//在某個位置插入一個元素
	int arr[5] = { 6, 7, 8, 9, 10 };
	v1.insert(it1, arr, arr + 2);   //在每個位置插入一段序列
	Show(v1);
	cout << endl;

	vector<int> v2;
	for (int i = 0; i < 8; i++)
		v2.push_back(i+3);

	cout << "erase" << endl;
	v2.erase(v2.begin()+1);		  //刪除一個元素
	Show(v2);
	v2.erase(v2.begin(), v2.end()-3);  //刪除一段元素
	Show(v2);
	cout << endl;

	cout << "swap" << endl;
	cout << "v1 :" ;
	Show(v1);
	cout << "v2 :" ;
	Show(v2);
	v2.swap(v1);
	cout << "after swap" << endl;
	cout << "v1 :" ;
	Show(v1);
	cout << "v2 :" ;
	Show(v2);
	cout << endl;

	cout << "clear" << endl;
	v1.clear();
	cout << "size of v1: " << v1.size() << endl;	//size被清為0
	cout << "capacity of v1: " << v1.capacity() << endl; //容量依然不變

	return 0;
}