我即将重构一些重复的代码。两个函数都使用 equal_range() 在多图中搜索。在调用 equal_range() 之后的 for 循环中,有一个 for 循环将迭代器设置为 equalRange.first,条件为 it!= equalRange.second。
如果找到正确的值,则两个函数不同。我想做的是将搜索功能作为前面提到的两个使用的自己的帮助功能。
使这项工作不是问题。问题是我无法想出一种方法来使其“简单”和未来证明,以使其对使用此代码的其他人有意义。显然,我想要从搜索功能返回的东西。
如果我要返回一个布尔值来指示是否在多重映射中找到了该值,我必须将一个迭代器传递给指向该元素的多重映射。我觉得这很丑。
如果返回的是迭代器,我们当然必须在使用搜索功能的两个函数中检查边界。我们无法对照 multimap.end() 检查它,因为我们使用了 equal_range,所以 equalRange.second 不必等于 multimap.end()。
使用边界检查 returnIter == checkBound(x) 其中 checkBound(x) 返回 multimap::upperbound(x) 使 checkBound(x) 知道搜索函数的 equal_range 实现。因此,如果其他人要更改搜索功能,则 checkBound(x) 可能无法按预期工作。
我的立场是,搜索功能的用户不应该关心它是如何实现的,即不应该知道它使用了equal_range。
您对此有何意见和建议?我这里是不是太详细了?您将如何实现搜索功能?
谢谢