【发布时间】:2012-11-25 21:42:27
【问题描述】:
我的程序基于一组对,即
typedef std::pair<int,int> innerPair;
typedef std::pair<innerPair,int> setElement;
std::set<setElement> Foo;
innerPair 元素是真正定义 setElement 的元素,但我需要为每个元素附加一个组 ID,因此是后者 setElement 定义。
在程序的其余部分,我需要找到innerPair,而不管他们的组ID,所以我基本上需要一个函数
std::set<setElement>::iterator find(innePair);
无论其组 ID 为何,都会找到 innerPair。就目前而言,我可以简单地循环遍历所有可用的组 ID 并进行多次 find() 调用,但这远没有效率。
有没有一种简洁的方法来定义一个执行某种通配符搜索的find( ... )成员函数,还是我需要用我自己的定义重载它?
【问题讨论】:
-
你是说
innerPair是key,group ID是value?如果是这样,为什么不直接使用map? -
看起来你真的想要
std::map<innerPair, int>。 -
您是在寻找特定的 innerPair,还是在寻找具有给定组 ID 的所有 innerPair?
-
innerPair 是唯一定义的键,所以是的,我认为那张地图就是我要找的。span>
标签: c++ iterator find set std-pair