我的程序基于一对对,即

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 的搜索。

10-05 18:00