学习完了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
|