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

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

这里我只举两个例子,一个是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!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值