STL——順序容器vector

  1. 簡單地說,vector是數組的一種類表示,它提供了自動內存管理功能,可以動態的改變vector對象的長度,並隨着元素的添加和刪除兒女增大和縮小。它提供了對元素的隨機訪問。在尾部添加和刪除元素的時是固定的,但在頭部或中間插入和刪除元素的複雜度爲線性時間。
  2. 除序列外,vector還是可反轉容器概念的模型。這增加了兩個類方法,rbegin() 和 rend() 。前者返回一個指向反序列的第一個元素的迭代器,後者返回反轉序列的超尾迭代器。
  3. 關於順序容器的函數 請訪問 STL——概述 中的 “ 順序容器和關聯容器中都有的成員函數” 及 “順序容器的常用成員函數”。
  4. vector 插入刪除 示例

代碼實現爲:

#include<iostream>
#include<vector>
using namespace std;
template<class T>
void PrintVector(T s,T e)
{
	for(;s!=e;++s)
		cout << *s << " ";
	cout << endl;
}
int main()
{
	int a[5]={1,2,3,4,5};
	vector<int>v(a,a+5);       //將數組a的下標從0到4的元素進入到v中
	cout << "1) " << v.end()-v.begin() << endl;  //兩個隨機迭代器可以相減,輸出 1)5
	cout << "2) ";
	PrintVector(v.begin(),v.end());
	v.insert(v.begin()+2,13);    //在位於begin()+2的位置上插入13 
	cout << "3) ";
	PrintVector(v.begin(),v.end());
	v.erase(v.begin()+2);       //刪除位於begin()+2的元素
	cout << "4) ";
	PrintVector(v.begin(),v.end());
	vector<int>v2(4,100);       //v2有4個元素,都是100
	v2.insert(v2.begin(),v.begin()+1,v.begin()+3); //將v的一段插入v2開頭
	cout << "5) v2: ";
	PrintVector(v2.begin(),v2.end());
	v.erase(v.begin()+1,v.begin()+3);  //刪除v上的一個區間,即2,3
	cout << "6) ";
	PrintVector(v.begin(),v.end());
	return 0;
}

運行結果:
在這裏插入圖片描述

  1. vector實現二維數組

代碼實現:

#include<iostream>
#include<vector>
using namespace std;
int main()
{
	vector<vector<int> >v(3);   //v有3個元素,每個元素都是vector<int>容器
	for(int i=0;i<v.size();++i)
	{
		for(int j=0;j<4;++j)
		{
			v[i].push_back(j);	
		}
	}
	for(int i=0;i<v.size();++i)
	{
		for(int j=0;j<v[i].size();++j)
		{
			cout << v[i][j] << " ";
		}
		cout << endl;
	} 
	return 0;
}

運行結果爲:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章