1. 程式人生 > >一個程式包含C++ STL中vector常見用法

一個程式包含C++ STL中vector常見用法

廢話少說,直接上程式碼: 

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

int main()
{
	//vector的四種構造方式
	//構造一個空vector 
	vector<int> vectorOne;
	//向裡面壓入資料
	for( int i=0; i<10; i++ )
		vectorOne.push_back(i);
	//訪問資料方式一 
	for( int i=0; i<vectorOne.size(); i++ )
		cout << vectorOne[i] << " ";
	cout << endl;
	//返回當前vector在重新進行記憶體分配以前所能容納的元素數量
	cout << vectorOne.capacity() << endl;
	
	//構造方式二,傳入一個vector變數
	vector<int> vectorTwo( vectorOne );
	//訪問方式二
	for( int i=0; i<vectorTwo.size(); i++ )
		cout << vectorTwo.at(i) << " ";
	cout << endl; 
	//刪除當前vector中的所有元素
	vectorTwo.clear();
	cout << vectorTwo.size() << endl;
	
	//兩個vector進行大小比較
	cout << (vectorOne > vectorTwo) << " ";
	cout << (vectorOne >= vectorTwo) << " ";
	cout << (vectorOne > vectorTwo) << " ";
	cout << (vectorOne >= vectorTwo) << " ";
	cout << (vectorOne == vectorTwo) << " ";
	cout << (vectorOne != vectorTwo) << " ";
	cout << endl; 
	
	//構造方式三,確定容量和初始化數值
	vector<char> vectorThree( 10, 65 );
	for (int i=0; i<vectorThree.size(); i++ )
		vectorThree.at(i) += i;
	//訪問方式三, 迭代器
	vector<char>::iterator iter;
	for( iter=vectorThree.begin(); iter!=vectorThree.end(); iter++ )
		cout << *iter << " ";
	cout << endl; 
	//檢視vectorThree所能容納元素的最大值 
	cout << vectorThree.max_size() << endl; 
	
	//構造方法四,用迭代器構造 
	vector<char> vectorFour(vectorThree.begin(), vectorThree.end());
	//訪問方式四,向後彈出元素
	while( !vectorFour.empty() )//非空迴圈
	{
		cout << vectorFour.front() << " ";//返回第一個元素 
		cout << vectorFour.back() << " ";//返回最後一個元素
		vectorFour.pop_back();//彈出最後一個元素 
	}
	cout << endl; 
	
	//賦值並清空原來的資料 
	vectorFour.assign( vectorThree.begin(), vectorThree.end() );
	for( iter=vectorFour.begin(); iter!=vectorFour.end(); iter++ )
		cout << *iter << " ";
	cout << endl;
	vectorFour.assign( 5, 100 );
	for( iter=vectorFour.begin(); iter!=vectorFour.end(); iter++ )
		cout << *iter << " ";
	cout << endl;
	
	//刪除迭代器指向位置元素
	vectorThree.erase(vectorThree.begin());
	for( iter=vectorThree.begin(); iter!=vectorThree.end(); iter++ )
		cout << *iter << " ";
	cout << endl;
	//向制定位置插入元素
	vectorThree.insert( vectorThree.begin(), 65 );
	for( iter=vectorThree.begin(); iter!=vectorThree.end(); iter++ )
		cout << *iter << " ";
	cout << endl;
	//向指定範圍刪除元素
	iter = vectorThree.begin();
	iter++;
	vectorThree.erase( iter, vectorThree.end() );
	for( iter=vectorThree.begin(); iter!=vectorThree.end(); iter++ )
		cout << *iter << " ";
	cout << endl;
	//插入元素
	vectorThree.insert( iter, 9, 66 );
	for( iter=vectorThree.begin(); iter!=vectorThree.end(); iter++ )
		cout << *iter << " ";
	cout << endl;
	//插入元素
	vectorThree.insert( vectorThree.end(), vectorFour.begin(), vectorFour.end() );
	for( iter=vectorThree.begin(); iter!=vectorThree.end(); iter++ )
		cout << *iter << " ";
	cout << endl;
	//返回最後一個元素 
	cout << *(vectorThree.rbegin()) << " " << endl;
	//返回一個元素前面的未知空間迭代器 
	cout << *(vectorThree.rend()) << " " << endl;
	//改變當前vector的大小為20,且對新建立的元素賦值'S'
	vectorFour.resize( 20, 'S' );
	for( iter=vectorFour.begin(); iter!=vectorFour.end(); iter++ )
		cout << *iter << " ";
	cout << endl;
	//為當前vector預留至少共容納100個元素的空間,實際空間大於size
	vectorFour.reserve(100);
	cout << vectorFour.size() << endl;
	//交換當前vector的元素
	vectorThree.swap( vectorFour );
	for( iter=vectorFour.begin(); iter!=vectorFour.end(); iter++ )
		cout << *iter << " ";
	cout << endl;
	return 0;
}

執行結果: