STL 容器和迭代器连载7_容器大小的操作
2012-05-26 22:32
274 查看
/*- ========================================================== * 文件名 :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 //============================
相关文章推荐
- STL 容器和迭代器连载7_容器大小的操作
- STL 容器和迭代器连载7_容器大小的操作
- STL 容器和迭代器连载7_容器大小的操作
- STL 容器和迭代器连载4_顺序容器的操作1
- STL 容器和迭代器连载6_顺序容器的操作3
- STL 容器和迭代器连载5_顺序容器的操作2
- STL 容器和迭代器连载6_顺序容器的操作3
- STL 容器和迭代器连载6_顺序容器的操作3
- STL 容器和迭代器连载4_顺序容器的操作1
- STL 容器和迭代器连载6_顺序容器的操作3
- STL 容器和迭代器连载4_顺序容器的操作1
- STL 容器和迭代器连载5_顺序容器的操作2
- STL 容器和迭代器连载4_顺序容器的操作1
- 容器大小的改变以及容器操作可能使迭代器失效、vector对象的容量变化
- STL 容器和迭代器连载1_简介
- STL 容器和迭代器连载2_迭代器
- STL 容器和迭代器连载1_简介
- STL 容器和迭代器连载3_顺序容器初始化
- STL 容器和迭代器连载2_迭代器
- STL 容器和迭代器连载8_访问顺序容器的元素