1. 程式人生 > >STL之vector基本使用例項

STL之vector基本使用例項

最近複習STL,對於vector的一些功能知道,但是就忘記了函式名是啥了,這就很尷尬,所以把經常使用的方法都用了,也方便以後回顧。

vector基本方法-->看圖:


test_code:

void test_vector()
{
	vector<int> vec;
	vec.push_back(1);  //尾插
	vec.push_back(3);
	vec.push_back(5);
	vec.push_back(7);
	cout << "begin() , end() 測試 :" << endl;  //返回的是迭代器
	cout << *(vec.begin() ) << endl;
	//結果 :  begin返回指向容器第一個元素的迭代器,end返回指向容器最後一個元素後面位置的迭代器

	cout << "size() , max_size()   capacity()  empty()   測試 :" << endl;
	cout << vec.size() << endl;
	cout << vec.max_size() << endl; //max_size最大的可能的元素個數
	cout << vec.capacity() << endl;
	cout << vec.empty() << endl;


	cout << "resize() , reserve() 測試 :" << endl;
	vec.resize(20);   //設定size的大小
	cout << vec.size() << endl;  
	cout << vec.capacity() << endl;

	vec.reserve(30);  //設定capacity的大小
	cout << vec.size() << endl;
	cout << vec.capacity() << endl;

	cout << " empty() , [] ,  = 測試 :" << endl;
	cout << vec.empty() << endl;
	cout << vec[0] << endl;
	vec[0] = 0;
	cout << vec[0] << endl;

	cout << " iterator  , erase測試 :" << endl;
	vector<int>::iterator it = vec.begin();
	for (; it != vec.end(); ++it)
		cout << *it << " ";

	//for (it = vec.begin(); it != vec.end(); ++it)
	//{
	//	vec.erase(it);  //迭代器失效!!
	//}
	//下面是正確的使用:
	for (it = vec.begin(); it != vec.end();)
	{
		it = vec.erase(it);   
	}

	cout << "insert() , clear() 測試:"<<endl;
	vec.push_back(1);
	vec.push_back(3);
	vec.push_back(5);
	vec.push_back(7);
	it = vec.begin();

	vec.insert(it, 0);  //在it指向位置 前插
	for (; it != vec.end(); ++it)
		cout << *it << " ";
	cout << endl;
	cout << vec.size() << endl;;

	vec.clear();  //清除資料
	cout<<vec.size() << endl;
	cout << vec.capacity() << endl;

	cout << "front() , back() , at() 的測試:" << endl;
	vec.push_back(1);
	vec.push_back(3);
	vec.push_back(5);
	vec.push_back(7);
	cout << vec.front() << "~~" << vec.back() << endl;
	for (size_t i = 0; i < vec.size(); ++i)
		vec.at(i) = i*i;
	for (size_t i = 0; i < vec.size(); ++i)
		cout<<vec.at(i) << endl;
        vec.pop_back(); // 尾刪
vec.pop_back(); // 尾刪
vec.pop_back(); // 尾刪
vec.pop_back(); // 尾刪
}