当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

<b>STL学习系列之三:操作list容器</b>[VC/C++编程]

赞助商链接



  本文“<b>STL学习系列之三:操作list容器</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

学习完了STL系列之二,自己写了个程序练手!程序采取的还是系列之二文章的架构.学习了STL之一和之二,关于STL的基本原理算有个个基本的理解.其实关于这几种容器,从前也都接触过,不过是在java上,当时学习时也是囫囵吞枣!目前感受那真是学习之大忌,还是一步一个脚迹为好.速度可以放慢点,那要踏实!

注意:程序在vc6下调试通过,关于不清楚如安在vc下运行STL者,可以读STL系列之一.

//TjuAiLab
//Author:zhangbufeng
//Time:2005.8.23 22:00
#include <string>
#include <list>
#include <iostream>
#include <algorithm>
using namespace std;

PrintString(const string& StringToPrint);
const string NameCode("Bufeng");
class IsBufeng
{
public:
bool operator()(string &StringName)
{
 return StringName.substr(0,6)==NameCode;
}
};
void main(void)
{
//定义一个list
list<string>AIStudentName;
list<string>TargetAIStudentName;
list<string>::iterator AIStudentNameIterator;
//利用的list的成员函数push_back和puch_front插入元素到list中,利用成员函数insert肆意插入
  AIStudentName.push_back("BufengZhang");
AIStudentName.push_back("YangZhang");
AIStudentName.push_back("KunHuang");
AIStudentName.push_front("ChengLuo");
AIStudentName.push_front("YonghuoYang");
AIStudentName.push_front("XiaoyuanCui");
AIStudentName.insert(AIStudentName.end(),"KefeiGong");
TargetAIStudentName.push_back("BufengZhang");
TargetAIStudentName.push_back("YangZhang");
//利用list的成员函数empty判断list能否为空,size来返回成员个数
if(AIStudentName.empty())
{
 cout<<"AIStudentName的成员为空"<<endl;
}
else
{
 cout<<"AIStudentName的成员个数为"<<AIStudentName.size()<<endl;
}
//利用for循环和迭代器处理list的元素
cout<<"AIStudentName的成员以下(利用for循环和迭代器:"<<endl;
for(AIStudentNameIterator=AIStudentName.begin();AIStudentNameIterator!=AIStudentName.end();
   AIStudentNameIterator++)
 {
 cout<<*AIStudentNameIterator<<endl;
 }
  //利用STL的通用算法for_each来处理list中的元素
cout<<"AIStudentName的成员以下(利用STL的通用算法for_each:"<<endl;
for_each(AIStudentName.begin(),AIStudentName.end(),PrintString);
//学习利用STL的通用算法count和count_if
int NumberofStudent=0;
NumberofStudent=count (AIStudentName.begin(),AIStudentName.end(),"BufengZhang");
cout<<"TjuAIlab中有"<<NumberofStudent<<"个BufengZhang"<<endl;
NumberofStudent=count_if(AIStudentName.begin(),AIStudentName.end(),IsBufeng());
cout<<"TjuAIlab中有"<<NumberofStudent<<"个BufengZhang"<<endl;
  //利用STL通用算法find()在list中查找对象
AIStudentNameIterator=find(AIStudentName.begin(),AIStudentName.end(),"BufengZhang");
if(AIStudentNameIterator==AIStudentName.end())
 cout<<"AIStudentName中没有BufengZhang"<<endl;
else
 cout<<"在AIStudentName中可以找到BufengZhang"<<endl;
//利用STL通用算法find_if在list中查找对象
AIStudentNameIterator=find_if(AIStudentName.begin(),AIStudentName.end(),IsBufeng());
if(AIStudentNameIterator==AIStudentName.end())
 cout<<"AIStudentName中没有BufengZhang"<<endl;
else
 cout<<"在AIStudentName中可以找到BufengZhang"<<endl;
//利用STL通用算法search在list中找一个序列
  AIStudentNameIterator = search(AIStudentName.begin(),AIStudentName.end(),TargetAIStudentName.begin(),TargetAIStudentName.end());
  if(AIStudentNameIterator==AIStudentName.end())
 cout<<"AIStudentName中没有找到BufengZhang And YangZhang"<<endl;
else
 cout<<"在AIStudentName中可以找到BufengZhang And YangZhang"<<endl;
//利用list的成员函数sort()排序一个list
AIStudentName.sort();
cout<<"排序以下:"<<endl;
for_each(AIStudentName.begin(),AIStudentName.end(),PrintString);
//利用list的成员函数删除元素(pop_front,pop_back,erase(),remove())
  AIStudentName.pop_front();
AIStudentName.pop_back();
AIStudentName.erase(AIStudentName.begin());
AIStudentName.remove("XiaoyuanCui");
cout<<"剩余成员以下:"<<endl;
for_each(AIStudentName.begin(),AIStudentName.end(),PrintString);
//利用STL通用算法remove()从list中删除元素
  AIStudentNameIterator=remove(AIStudentName.begin(),AIStudentName.end(),"YangZhang");
cout<<"remove后剩余成员以下:"<<endl;
for_each(AIStudentName.begin(),AIStudentNameIterator,PrintString);

}
PrintString(const string& StringToPrint)
{
cout<<StringToPrint<<endl;
}


  以上是“<b>STL学习系列之三:操作list容器</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .