Effective STL 为包含指针的关联容器指定比较类型

// 为包含指针的关联容器指定比较类型.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <set>
#include <string>
#include <iostream>

using namespace  std;

struct  StringPtrLess:
	public binary_function<const string*, const string*, bool>
	{
		bool operator()(const string *ps1, const string *ps2) const
		{
			return *ps1 < *ps2;
		}
	};

typedef set<string*, StringPtrLess> StringPtrSet;
StringPtrSet ssp;

int main()
{

	ssp.insert(new string("apple"));
	ssp.insert(new string("toy"));
	ssp.insert(new string("cat"));

	for (StringPtrSet::const_iterator i = ssp.begin();i != ssp.end();++i)
	{
		cout<<(**i)<<endl;
	}

	getchar();
	return 0;

}

时间: 2024-09-23 15:16:24

Effective STL 为包含指针的关联容器指定比较类型的相关文章

关联容器操作

关联容器还定义了如下表所示的类型.这些类型表示容器关键字和值的类型. 关联容器额外的类型别名 key_type 此容器类型的关键字类型 mapped_type  每个关键字关联的类型:只适用于map value_type 对于set,与key_type相同 对于map,为pair<const key_type,mapped_type> 对于set类型,key_type和value_type是一样的:set中保存的值就是关键字.在一个map中,元素是关键字-值对.即,每个元素是一个pair对象,

[C++ 面试基础知识总结] 关联容器

[C++ 面试基础知识总结] 关联容器 参考书籍:<C++ Primer> 目录 C 面试基础知识总结 关联容器 目录 关联容器类型 关联容器概述 定义关联容器 关键字类型的要求 pair 关联容器操作 关联容器迭代器 添加元素 删除元素 访问元素 无序容器 关联容器类型 标准库共提供了8个关联容器 map 关联数组:保存关键字-值对 set 关键字即值,即只保存关键字的容器 multimap 关键字可重复出现的map multiset 关键字可重复出现的set unordered_map 用

STL之关联容器

 关联容器支持高效的关键字查找和访问.两个主要的关联容器(associative-container)类型是map和set.标准库提供8个关联容器,它们的不同体现在三个维度上: 或者是一个set,或者是一个map 或者要求不重复的关键字,或者允许重复关键字 按顺序保存元素,或无序保存. 允许重复关键字的容器的开头名字中都包含单词multi:不保持关键字按顺序存储的容器的名字都以单词unordered开头. 类型map和multimap定义在头文件map中:set和multiset定义在头文件se

C++程序设计:原理与实践(进阶篇)16.6 关联容器

16.6 关联容器 除了vector之外,最有用的标准库容器恐怕就是map了.一个map就是一个(键,值)对的有序序列,你可以基于一个关键字在其中查找对应的值:例如my_phone_book["Nicholas"]应该是Nicholas的电话号码.在流行度的竞争中,map唯一的潜在竞争对手是unordered_map(见16.6.4节),它是一种针对字符串关键字优化过的map.类似map和unordered_map的数据结构有很多名字,例如关联数组(associative array)

使用 &amp;lt;multimap&amp;gt; 库创建重复键关联容器

摘要:标准库的 multimap 容器与 map 关联容器非常类似--但是, multimap 允许重复键.这个特性使得 multimap 比想象的要有用得多.本文将对之进行探讨 . 在"使用 <map> 库创建关联容器"一文中,我们讨论了标准库 中的 map 关联容器.但那只是 map 容器的一部分.标准库还定义了一个 multimap 容器, 它与 map 类似,所不同的是它允许重复键.这个属性使得 multimap 比预想的要更有用:比 如在电话簿中相同的人可以有两个

关联容器概述

关联容器和顺序容器有着根本的不同:关联容器中的元素是按关键字来保存和访问的.与之相对,顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的. 虽然关联容器的很多行为与顺序容器相同,但其不同之处反映了关键字的作用. 关联容器支持高效的关键字查找和访问.两个主要的关联容器类型是map和set.map中的元素是一些关键字-值对:关键字起到索引的作用,值则表示与索引相关联的数据.set中每个元素包含一个关键字:set支持高效的关键字查询操作--检查一个给定关键字是否在set中.例如,在某些文本处理过

使用 &amp;lt;map&amp;gt; 库创建关联容器

摘要:当索引是整型,那么将值与之关联并不难,但如果数据的关联值对是其它数据类型怎么办呢?<map>库具备一个关联容器,使用它可以很方便地关联所有类型的数据对.本文将讨论 <map> 库的使用方法和技巧. 关系数据库,科学计算应用以及基于Web的系统常常需要类似 vector 的容器,其索引可以是如何数据类型,不一定是整数.这样的容器叫关联容器,或者 map.例如,目录服务应用可以将私人姓名作为索引来存储,电话号码作为其关联的值: directory["Harry"

c++关于关联容器的迭代器问题

问题描述 c++关于关联容器的迭代器问题 在multimap这种容器中,一个键对应多个值,如果我用迭代器iter指向初始值,则iter->first指向键,那么iter->second指向什么,因为是一键多值,怎样用迭代器遍历这个键的所有的值又如何遍历这个容器的所有的键和值 解决方案 http://www.kuqin.com/cpluspluslib/20071231/3265.html 解决方案二: iter->second指向这个key对应的所有值的一个集合,它的每个元素你又可以用一

c++-关联容器初始话化,如下:

问题描述 关联容器初始话化,如下: 我用multiset miset(ivec.cbegin(), ivec.cend())初始化,等到我输出cout << miset.size() << endl;为什么显示0:ivec已经初始化,初始化的程序是: for(vector::size_type i = 0; i != 10; ++i) { ivec.push_back(i); ivec.push_back(i); //每个数重复保存一次 } 解决方案 先看ivec的size是多少