简化向量上的查找操作

时间:2011-06-07 22:32:58

标签: c++ vector std

由于需要随机访问数组的各个元素,因此我在代码中使用了一个向量来处理多个数组。一些用户GUI操作需要搜索数组(但不足以保证使用std::map),因此通过代码乱七八糟的是:

if (std::find(array.begin(), array.end(), searchfor) != array.end()) { ... }

我正在考虑一种更好,更容易阅读的方法,也许创建一个方法,这样我可以做if (array_find(searchfor) != array.end())之类的事情,甚至可以扩展向量,这样我就可以做if (array.find(searchfor) != array.end())

我不确定最好的方法。有任何想法吗?

3 个答案:

答案 0 :(得分:3)

使用您喜欢的任何内容。我相信做一个函数更好,它避免了创建一个新类并在任何地方使用它的麻烦。类似的东西:

bool array_contains(searchFor)
{
    return std::find(array.begin(), array.end(), searchfor) != array.end();
}

答案 1 :(得分:2)

您可能会发现Boost.Range值得一看。基本上你可以使用集合引用去除开始/结束调用作为参数。

#include <boost/range/algorithm/find.hpp>
...
if (boost::find(array, searchfor) != array.end()) { ... }

这个解决方案的优点是你仍然可以获得迭代器,这通常证明是有用的。

答案 2 :(得分:0)

除非你想重写整个标准库以在适当的情况下使用范围(比如这个),并确保你所使用的每个人都这样做,那么第一个发布的代码是最好的。< / p>

相关问题