我的程序基于一对对,即
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);
它将找到innerPair,而不考虑其组ID。就目前而言,我可以简单地遍历所有可用的组ID并进行多个find()调用,但这远没有效率。
是否有一种定义执行某种通配符搜索的
find( ... )
成员函数的简洁方法,还是我需要用自己的定义重载它? 最佳答案
如果您有多个具有相同内部对和不同组ID的元素,则可以使用 std::multimap<innerPair, int>
。
这使您可以使用相同的innerPair
存储多个元素。
它还简化了使用lower_bound/upper_bound
或 equal_range
的搜索。