当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 一步一步学STL标准模板库

VC++
在类VC的界面实现中加入目录树
软件换肤技术在 BCB 中的实现
利用非模窗口生成MDI介面
报表输出轻松搞定
Windows 中不规则窗体的编程实现
解说Win32的窗口子类化
使用测试优先方法开发用户界面
一个简单的登录对话框的实现
一个简单的日记本程序
从资源中加载皮肤
一个在RichEdit中添加表情图象的类
ActiveSkin 4.3 软件换肤在VC中的实现
一种另类“关于(About)”对话框的动态显示方法
对话框打印预览及打印
关于如何换肤、子类化的解决方案
制作 MSN、QQ 的消息提示窗口
如何对 BCGControlBarPro 进行换肤
定制个性化的对话框窗口类
改变窗口中的光标形状
更新MFC中的视图,跟踪.NET Framework中的事件

VC++ 中的 一步一步学STL标准模板库


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 50 ::
收藏到网摘: n/a

一步一步学STL标准模板库

作者:江上飞鸟
QQ:36201365

list 的使用

在使用list必须包括头文件#include <list>,
1)、如何定义一个list对象
#include <list>int main (void){	list<char > cList; //声明了list<char>模板类 的一个实例}
2)、使用list的成员函数push_back和push_front插入一个元素到list中
cList. push_back(‘a’); //把一个对象放到一个list的后面cList. push_front (‘b’); //把一个对象放到一个list的前面
3)、使用list的成员函数empty()判断list是否为空
if (cList.empty()){	printf(“this list is empty”);}
4)、用list< char >::iterator得到指向list的指针
list< char>::iterator charIterator;for(cIterator = cList.Begin();cIterator != cList.end();cIterator++){	printf(“%c”, *cIterator);} //输出list中的所有对象
说明:cList.Begin()和cList.end()函数返回指向list< char >::iterator的指针,由于list采用链表结构,因此它不支持随机存取,因此不能用cList.begin()+3来指向list中的第四个对象,vector和deque支持随机存取。

5)、用STL的通用算法count()来统计list中的元素个数
int cNum;char ch = ’b’;cNum = count(cList.Begin(), cList.end(), ch); //统计list中的字符b的个数
说明:在使用count()函数之前必须加入#include <algorithm>

6)、用STL的通用算法count_if ()来统计list中的元素个数
const char c(‘c’);class IsC{public:	bool operator() ( char& ch )	{	return ch== c;	}};int numC;numC = count_if (cList.begin(), cList.end(),IsC());//统计c的数量;
说明:count_if() 带一个函数对象的参数,函数对象是一个至少带有一个operator()方法的类函数对象被约定为STL算法调用operator时返回true或false。它们根据这个来判定这个函数。举个例子会 说的更清楚些。count_if()通过传递一个函数对象来作出比count()更加复杂的评估以确定一个对象是否应该被记数。

7)、使用STL通用算法find()在list中查找对象
list<char >::iterator FindIterator;FindIterator = find(cList.begin(), cList.end(), ‘c’);If (FindIterator == cList.end()){	printf(“not find the char ‘c’!”);}else{	printf(“%c”, * FindIterator);}
说明:如果没有找到指定的对象,就会返回cList.end()的值,找到了就返回一个指向对象iterator的指针。

8)、使用STL通用算法find_if()在list中查找对象
const char c(‘c’);class c{public:	bool operator() ( char& ch )	{	return ch== c;	}};list<char>::iterator FindIteratorFindIterator = find_if (cList.begin(), cList.end(),IsC());//查找字符串c;
说明:如果没有找到指定的对象,就会返回cList.end()的值,找到了就返回一个指向对象iterator的指针。

9)、使用list的成员函数sort()排序
cList.sort();
10)、使用list的成员函数insert插入一个对象到list中
cList.insert(cLiset.end, ‘c’); ///在list末尾插入字符‘c’char ch[3] ={‘a’, ‘b’, ‘c’};cList.insert(cList.end, &ch[0], & ch[3] ); //插入三个字符到list中
说明:insert()函数把一个或多个元素插入到指出的iterator位置。元素将出现在 iterator指出的位置以前。

11)、如何在list中删除元素
cList.pop_front(); //删除第一个元素cList.pop_back(); //删除最后一个元素cList. Erase(cList.begin()); //使用iterator删除第一个元素;cList. Erase(cList.begin(), cList.End()); //使用iterator删除所有元素;cList.remove(‘c’); //使用remove函数删除指定的对象;list<char>::iterator newEnd;//删除所有的’c’ ,并返回指向新的list的结尾的iteratornewEnd = cList.remove(cList.begin(), cList.end(), ‘c’);