标准模板库使用举例(STL - (LIST,VECTOR))

来源:互联网 发布:js获得input的宽度 编辑:程序博客网 时间:2024/05/13 05:14

今天,我们试着使用标准模板库吧.

这里我只举两个例子,一个是LIST,一个是VECTOR,如果用的好的话,你的程序维护起来将会更容易的.

呵呵,我这里把它们都注释了,如果你要测试哪一个,你就取消那个注释 ,我是应为要在这里演示各种功能,所以注释的.

好了,贴代码了:

// STL.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

void PrintString( string & strToPrint )
{
 cout<<strToPrint<<endl;
}

void PrintInt( int & n )
{
 cout<<n<<endl;
}

class example
{
public:
 bool operator () (string & str )
 {
  return str == "BEYOND!";
 };
};

int main(int argc, char* argv[])
{
 /*list<string> list_string;
 list<string>::iterator StringIterator;

 list_string.push_back( "Hello World!" );
 list_string.push_back( "Simple One!" );
 list_string.push_back( "Simple One!" );
 list_string.push_back( "Simple One!" );
 list_string.push_back( "Hello World!" );
 list_string.push_back( "BEYOND!" );
 list_string.push_back( "我是中国人!" );*/
 
 /*------------------------------------------------------------*/
  循环遍历整个list
 /*------------------------------------------------------------*/
 /*for_each(list_string.begin(),list_string.end(),PrintString);
 //推荐使用,这里,它会调用PrintString( string & strToPrint )函数,参数strToPrint值来自list中的元素*/
 /*for( StringIterator = list_string.begin(); StringIterator != list_string.end(); ++StringIterator)
 {
  cout<<*StringIterator<<endl;
 }*/
 
 /*------------------------------------------------------------*/
  查找list中的元素
 /*------------------------------------------------------------*/
 /*StringIterator = find( list_string.begin(),list_string.end(),"BEYOND!" );
 //StringIterator = find_if( list_string.begin(), list_string.end(), example() );
 if( StringIterator == list_string.end() )
  cout<<"Not Fond It!"<<endl;
 else
  cout<<*StringIterator<<endl;
 //查找某个元素*/
 /*list<string> list_target;
 list_target.push_back("BEYOND!");
 list_target.push_back( "我是中国人!" );

 StringIterator = search(list_string.begin(),list_string.end(),
  list_target.begin(),list_target.end());
 if ( StringIterator == list_string.end() )
  cout<<"Not Fond It!"<<endl;
 else
  for_each(list_target.begin(),list_target.end(),PrintString);
 //查找一个list中的某个部分是否包含另一个list中的某个部分*/

 /*------------------------------------------------------------*/
  排序list中的元素
 /*------------------------------------------------------------*/
 /*
 for_each(list_string.begin(),list_string.end(),PrintString);
 list_string.sort(); //排序list中的元素。
 for_each(list_string.begin(),list_string.end(),PrintString);
 */
 /*------------------------------------------------------------*/
  插入list中的元素
 /*------------------------------------------------------------*/
 /*list_string.insert(list_string.begin(),"Begin......"); //在头不插入
 list_string.insert(list_string.end(),"End......");   //在尾部插入
 string arrString[2] = { "00000",
  "6"
 };
 list_string.insert(list_string.end(),&arrString[0],&arrString[1]);
 //在list的某个位置插入一定范围的所有元素到list中,如果没有就把范围开始的元素插入,范围结束不插入
 for_each(list_string.begin(),list_string.end(),PrintString);*/
 /*------------------------------------------------------------*/
  删除list中的元素
 /*------------------------------------------------------------*/
 /*list_string.pop_front(); //在头部删除
 list_string.pop_back();  //在尾部删除*/
 //list_string.remove( "BEYOND!" ); //删除BEYOND!这个元素,没有则一个不删,改变list大小
 /*StringIterator = remove( list_string.begin(), list_string.end(), "Hello World!" );
 //不改变list大小,
 //返回一个新的结尾的iterator。从头到这个新的结尾的范围包含了删除后剩下的元素。
 //我们可以用list成员函数erase函数来删除从新结尾到老结尾的部分。
 for_each(list_string.begin(),StringIterator,PrintString);*/


 /*-------------------------------------------------------------*/
 如果能够有效地使用vector容器,以后就不用再去使用C类型的动态数组了

 vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。既然
 是数组,当然支持随机访问了。
 /*-------------------------------------------------------------*/

 //vector<int> n_vector(10,0); //包含有十个数据,初始化为0
 //vector<int>::iterator n_iterator;

 
 /*cout << n_vector.front() << endl;    //返回第一个数据,如果不为空的话
 cout << *n_vector.rbegin()<< endl;    //传回逆向的第一个数据
 n_vector.resize(10);       //从新指定容器容量为10
 n_vector.reserve(20);       //保留20个元素的容量
 cout << n_vector.size() << endl;    //返回容器中实际元素的个数
 n_vector.assign(10,1);       //将10个1的拷贝赋值给n_vector
 n_vector.push_back(10);       //在最后添加数据
 if( n_vector.empty() ) cout << "empty" << endl; //判断VECTOR是否为空
 cout << n_vector.size() << endl;    //得到VECTOR的大小
 cout << n_vector.capacity() << endl;   //返回容器容量*/

 /*n_vector[1] = 1;    //给1位置赋值
 n_vector.at(2) = 2;    //给2位置赋值
 cout << n_vector.at(1) << endl; //得到1位置的值
 cout << n_vector[2] << endl;    //得到1位置的值*/

 /*vector<int> n_vec;
 n_vec.reserve(10);
 try
 {
  int n1 = n_vec[1];  // 不进行越界检查
  //int n2 = n_vec.at(2); // 越界检查,如果越界将抛出异常
 }
 catch( const exception& e )
 {
  cout << e.what();
 }*/

 /*//插入数据
 vector<int> n(5,2);
 n_vector.insert( n_vector.begin(), 36 );     //在开始处插入数据36
 n_vector.insert( n_vector.end(), 5, 37 );     //在结尾处插入5个37
 n_vector.insert( n_vector.begin(), n.begin(), n.end() ); //在开始处插入容器n
 n_vector.insert( &n_vector[7], n.begin(), n.end() );  //在位置7的后面处插入容器n*/

 /*//删除vector中的数据
 n_vector.pop_back();        //删除最后的元素,容器容量不变
 n_vector.clear();         //删除所有数据,不清空容器容量
 cout << n_vector.max_size() << endl;    //返回容器中最大可以存放的数据量
 n_vector.erase( n_vector.begin(), n_vector.end() ); //清空容器的开始和结束区间的容量
 cout << n_vector.capacity() << endl;    //返回容器容量*/

 /*------------------------------------------------------------*/
  循环遍历VECTOR
 /*------------------------------------------------------------*/
 //for_each( n_vector.begin(), n_vector.end(), PrintInt );

 return 0;
}

搞定,BYE!

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 腿被裤子染黑了怎么办 肚子上的松皮怎么办 在公司天天背锅怎么办 职场老实背锅怎么办 三星a8充不了电怎么办 果6软件连不上网怎么办 孩子在幼儿园磕伤了怎么办 小孩在幼儿园摔骨折了怎么办 孩子在幼儿园摔骨折了怎么办 大腿被撞了很痛怎么办 马面褶子坏了怎么办 纱料衣服有褶怎么办 裙子如果后背那里小了怎么办 湖州耳朵鸣很严重怎么办 预授权撤销错了怎么办 打酒店里小卡片电话被骗怎么办 本科错过了选导师该怎么办 本科导师威胁学生不让毕业怎么办 意向导师名额满了怎么办? 扔的瓶子被限制怎么办 左钝缘支起始部重度狭窄怎么办 吃了抑郁症药困怎么办 如果股票退市持股人怎么办 电信身份信息审核失败怎么办 打完肌肉针肿了怎么办 refa掉了一个球怎么办 左腿比右腿粗怎么办 产妇上火怎么办吃什么下火呢 哺乳期上火怎么办吃什么下火 前扣内衣有点紧怎么办 橱柜做了小10厘米怎么办 一个月宝宝体检胸围35怎么办 月经量少脸上长斑怎么办 下压100上压160怎么办 怎么办去台湾新的驻签 学生去韩国旅游签证怎么办 猪的眼睛赛肿了怎么办 纹眉没有修复霜怎么办 衣服搞到走珠露香水洗不掉怎么办 涂牙膏把脸烧伤怎么办 月经血排不出来怎么办