【发布时间】:2013-03-23 22:43:37
【问题描述】:
上下文: 我在 map 上使用 std::string 执行 std::find。然后它返回一个向量迭代器,我将返回的迭代器保存在一个常量迭代器中。
问题: 我现在想遍历返回的 const-iterator,并字符串比较索引 0 处的每个向量。所以类似于:
while (iterator != map.end())
if ( myStr == iterator.at(0) )
break;
else
iterator++
这种方法对我来说效果很好,我想知道是否有更优雅的方法可以做到这一点,我错过了什么吗?
感谢您对此的帮助 =]
【问题讨论】:
-
如果它有效并且对你没问题,我看不出问题。我也觉得不错。
-
是的,它有效,但我想知道是否有任何我可以使用的 stl 魔法,让它变得更好。
-
我不这么认为,但无论如何,为什么 STL 魔法会让它变得更好?如果你的意思是我认为你所说的 STL 魔法,那么它无论如何都被过度使用了。我的意思是你可以使用 std::find_if (或其他东西),但为什么要打扰。只是让代码更复杂,更不容易理解(当然这是个人意见)。
-
我想你是对的,无论如何它必须是线性搜索。我只是想知道是否可以将仿函数传递给搜索算法。但我没有找到任何这样的东西=[
-
我认为您可以将函子传递给搜索算法。问题是这是否会有所改善。在我看来,不,但其他人会不同意。
标签: c++ map vector iterator find