/*- ========================================================== * 文件名 :STL_con_ite_7.cpp * 開發人員:袁培榮 * 當前版本:1.0.0.2595 * 建立時間:2012-05-26 * 修改時間:2012-05-26 * 功能說明:STL 容器和迭代器連載7_容器大小的操做 * 版權說明:版權全部 袁培榮 YuanPeirong * 編譯環境:Windows 7(x64) SP1 簡體中文專業版 * 編譯器: Visual Studio 2010 SP1(中文旗艦版) MinGW 20120426 GNU GCC 4.6.2 Visual C++ 6.0 SP6(中文企業版) - ==========================================================*/ #include <iostream> #include <vector> #include <list> #include <deque> #include <string> using std::cout; using std::endl; using std::vector; using std::list; using std::deque; using std::string; int main(int argc, char* argv[]) { //首先,請你看本文的標題,是容器大小的操做, //而非順序容器大小的操做,也就是說: //本文的內容適用全部容器,而不單單是順序容器。 //操做1: //size()成員函數返回當前容器中元素的個數 //返回類型爲 容器名<T>::size_type cout<<"操做1:"<<endl; vector<int> v1; vector<string> v2(10); vector<int>::size_type sv1=v1.size(); vector<string>::size_type sv2=v2.size(); cout<<"v1.size()="<<sv1<<endl; cout<<"v2.size()="<<sv2<<endl; //注意:不能用 vector<int>::size_type類型來接收 v2.size() //由於一個是vector<int>類,另外一個是vector<string>類,沒有任何關係。 //若是容器元素有增減,咱們就要從新獲取其size。 v1.push_back(10); //在最尾加入一個10 v2.pop_back(); //把最尾元素刪除 cout<<"增減容器元素後:"<<endl; sv1=v1.size(); //從新獲取容器的大小 sv2=v2.size(); //從新獲取容器的大小 cout<<"v1.size()="<<sv1<<endl; cout<<"v2.size()="<<sv2<<endl; //操做2: //max_size() 成員函數返回當前容器所能容納元素數量的最大值 //(注:包括可從新分配內存) 返回類型爲 容器名<T>::size_type //這個值可能與編譯器,編譯選項,操做系統,類型T等的不一樣而不一樣 cout<<"操做2:"<<endl; vector<int>::size_type mv1=v1.max_size(); vector<string>::size_type mv2=v2.max_size(); cout<<"v1.max_size()="<<mv1<<endl; //你的輸出值不必定和個人同樣 cout<<"v2.max_size()="<<mv2<<endl; //mv2和mv1也不必定相同 //max_size()函數的返回值和當前容器元素的個數沒有關係 //改變當前容器元素的個數和結果不變 v1.push_back(15); //在最尾加入一個10 v2.pop_back(); //把最尾元素刪除 cout<<"增減容器元素後:"<<endl; mv1=v1.max_size(); mv2=v2.max_size(); cout<<"v1.max_size()="<<mv1<<endl; cout<<"v2.max_size()="<<mv2<<endl; //注意:對同一個容器對象,size函數和max_size函數的返回類型是同樣的 //其實,咱們不用定義 mv1和mv2,能夠分別重用sv1和sv2 cout<<"mv1用sv1替換,mv2用sv2替換後:"<<endl; sv1=v1.max_size(); sv2=v2.max_size(); cout<<"v1.max_size()="<<sv1<<endl; cout<<"v2.max_size()="<<sv2<<endl; //操做3: //empty()成員函數,若是當前容器沒有容納任何元素, //則返回true,不然返回false. cout<<"操做3:"<<endl; if(v1.empty()) cout<<"v1是空的"<<endl; else cout<<"v1不是空的"<<endl; v1.clear(); //清空v1 cout<<"清空v1後:"<<endl; if(v1.empty()) cout<<"v1是空的"<<endl; else cout<<"v1不是空的"<<endl; //操做4: //resize(n)成員函數改變當前容器的大小爲n //若是n小於原來的大小,則刪除多出來的元素 //若是n大於原來的大小,則添加的元素採用值初始化 //若是n等於原來的大小,則不操做 cout<<"操做4:"<<endl; v1.push_back(10); //操做3中已經將v1清空,如今爲其添加兩個元素 v1.push_back(20); cout<<"v1.size()="<<v1.size()<<endl; int i; for(i=0; i!=v1.size(); i++) cout<<"v1["<<i<<"]="<<v1[i]<<endl; v1.resize(1); cout<<"調整v1的大小爲1後:"<<endl; cout<<"v1.size()="<<v1.size()<<endl; for(i=0; i!=v1.size(); i++) cout<<"v1["<<i<<"]="<<v1[i]<<endl; v1.resize(5); cout<<"再調整v1的大小爲5後:"<<endl; cout<<"v1.size()="<<v1.size()<<endl; for(i=0; i!=v1.size(); i++) cout<<"v1["<<i<<"]="<<v1[i]<<endl; //操做5: //resize(n,t)成員函數改變當前容器的大小爲n //若是n小於原來的大小,則刪除多出來的元素 //若是n大於原來的大小,則添加的元素都爲t //若是n等於原來的大小,則不操做 cout<<"操做5:"<<endl; v1.clear(); ////清空v1 v1.push_back(10); //爲其添加兩個元素 v1.push_back(20); cout<<"v1.size()="<<v1.size()<<endl; for(i=0; i!=v1.size(); i++) cout<<"v1["<<i<<"]="<<v1[i]<<endl; v1.resize(1, 100); cout<<"v1.resize(1, 100)後:"<<endl; cout<<"v1.size()="<<v1.size()<<endl; for(i=0; i!=v1.size(); i++) cout<<"v1["<<i<<"]="<<v1[i]<<endl; v1.resize(5, 100); cout<<"v1.resize(5, 100)後:"<<endl; cout<<"v1.size()="<<v1.size()<<endl; for(i=0; i!=v1.size(); i++) cout<<"v1["<<i<<"]="<<v1[i]<<endl; return 0; } //============================ //運行結果: //============================ // 操做1: // v1.size()=0 // v2.size()=10 // 增減容器元素後: // v1.size()=1 // v2.size()=9 // 操做2: // v1.max_size()=1073741823 // v2.max_size()=1073741823 // 增減容器元素後: // v1.max_size()=1073741823 // v2.max_size()=1073741823 // mv1用sv1替換,mv2用sv2替換後: // v1.max_size()=1073741823 // v2.max_size()=1073741823 // 操做3: // v1不是空的 // 清空v1後: // v1是空的 // 操做4: // v1.size()=2 // v1[0]=10 // v1[1]=20 // 調整v1的大小爲1後: // v1.size()=1 // v1[0]=10 // 再調整v1的大小爲5後: // v1.size()=5 // v1[0]=10 // v1[1]=0 // v1[2]=0 // v1[3]=0 // v1[4]=0 // 操做5: // v1.size()=2 // v1[0]=10 // v1[1]=20 // v1.resize(1, 100)後: // v1.size()=1 // v1[0]=10 // v1.resize(5, 100)後: // v1.size()=5 // v1[0]=10 // v1[1]=100 // v1[2]=100 // v1[3]=100 // v1[4]=100 //============================