<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++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |