/*- ========================================================== * 文件名 :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 //============================