effective stl: 第20条,为包含指针的关联容器指定比较类型
来源:互联网 发布:编程语言的种类 编辑:程序博客网 时间:2024/05/14 18:37
#include<iostream>#include<string>#include<algorithm>#include<map>#include<set>using namespace std;struct stringPtrLess : public binary_function<const string*, const string*,bool>{ bool operator()(const string* lptr, const string* rptr) const { return *lptr < *rptr; }};struct Dereference{ template<typename T> const T& operator()(const T *ptr)const { return *ptr; }};void print(const string* ps){ cout << *ps << endl;}bool Cmp(const string* ptr, const string* ptr2){ return *ptr < *ptr2;}int main(){ set<string*> ssp; ssp.insert(new string("Anteater")); ssp.insert(new string("Wombat")); ssp.insert(new string("Lemur")); ssp.insert(new string("Panguin")); //以下方式不会是按照字母排序顺序出现的动物名称,而是4个16进制数--它们是指针的值 for (set<string*>::const_iterator i = ssp.begin(); i != ssp.end(); i++) { cout << *i << endl; } //避免编写自己的循环,如果换一种方式,但是这种方式不能通过编译,因为传给 //ostream_iterator的参数是string和string*不符合 //copy(ssp.begin(), ssp.end(), ostream_iterator<string>(cout, "\n")); //方式1: set<string*, stringPtrLess> sssp; sssp.insert(new string("Anteater")); sssp.insert(new string("Wombat")); sssp.insert(new string("Lemur")); sssp.insert(new string("Panguin")); for (set<string*, stringPtrLess>::const_iterator i = sssp.begin(); i != sssp.end(); i++) { cout << **i << endl; } //方式2: cout << "方式2:" << endl; for_each(sssp.begin(), sssp.end(), print); //方式3 cout << "方式3:" << endl; //通过解除指针引用,“转换”sssp中的每个元素并把结果写入cout transform(sssp.begin(), sssp.end(), ostream_iterator<string>(cout, "\n"), Dereference()); //注意,因为set的3个参数需要的是类型,而不是函数,因此下边的做法不可取 //set<string, Cmp> errorSet; return 0;}
每当创建包含指针的关联容器时,也要记住为该容器指定比较类型,大多数情况下,这个比较类型只是解除指针的引用,并对指针指向的对象进行比较,下边是一个为这样比较函数准备的一个模板。
struct Dereference{ template<typename PtrType> bool operator()(PtrType pt1, PtyType pt2) { return *ptr1 < *ptr2; }};set<string*, Dereference> ssssp;
0 0
- effective stl: 第20条,为包含指针的关联容器指定比较类型
- Effective STL 为包含指针的关联容器指定比较类型
- 条款20:为指针的关联容器指定比较类型——effective STL
- Effective STL - 为指针的关联容器指定比较函数
- 为包含指针的关联容器指定比较类型
- 为包含指针的关联容器指定比较类型
- 为包含指针的关联容器指定比较类型
- 为指针的关联容器指定比较类型
- 为指针的关联容器指定比较类型
- effective stl 第33条:对包含指针的容器使用remove这一类算法时要特别小心
- Effective STL 第7条:如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉
- Effective stl 第23条:考虑用排序的vector代替关联容器
- Effective STL 第1条:慎重选择容器类型
- 使用STL的经验总结_指定关联容器的比较类型_12
- effective stl 第27条:使用distance和advance将容器的const_iterator转换为iterator
- Effective STL --关联容器
- Effective STL 读书笔记——第1条 慎重选择容器类型
- Effective STL 第12条:切勿对STL容器的线程安全性有不切实际的依赖
- qt写日志
- 利用ANN来实现简单的深度神经网络
- ListView优化
- spring+mybatis+springMVC详细整合
- C语言DAY08 - 进制
- effective stl: 第20条,为包含指针的关联容器指定比较类型
- Array.prototype.filter()的实现
- 回顾JavaSE(5)-String(4)7行代码分析一道关于String拼接的经典面试题
- C语言DAY09 - 数组
- 二分查找判定树
- apache +tomcat 集群配置
- 字符串最后一个单词的长度
- 画虚线
- URL中的保留和不安全字符