一個程式包含C++ STL中vector常見用法
阿新 • • 發佈:2018-12-11
廢話少說,直接上程式碼:
#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; }
執行結果: