我的程序基于一组对,即
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( ... )
成员函数,或者我是否需要用我的代码重载它自己的定义?
最佳答案
如果您有多个具有相同内部对和不同组 ID 的元素,您可以使用 std::multimap<innerPair, int>
.
这允许您使用相同的 innerPair
存储多个元素.
它还简化了使用 lower_bound/upper_bound
的搜索或 equal_range
.
关于c++ - STL set::find 重新定义搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13555791/