所以我一直在寻找一种在字符串列表中搜索字符串的方法。我编写了以下代码
bool contains(const std::list<std::string>& data, const std::string& str)
{
std::list<std::string>::iterator i;
for(i=data.begin(); i!=data.end(); ++i)
{
if (str == *i)
return true;
}
return false;
}
这只是一个非常基本的代码。我知道find方法,但它在开始和结束时都有。理想的解决方案是整个容器。有一些相同的提升方法,但我不知道如何使用它们。你能给出一些关于通用搜索元素的boost查找的例子。
答案 0 :(得分:4)
std::find
可以接受开始和结束迭代器,这基本上决定了整个容器:
std::find(data.begin(), data.end(), str);
答案 1 :(得分:3)
使用Boost.Range:
#include <boost/range/algorithm/find.hpp>
auto i = boost::find(container, value);
if (i != boost::end(container))
doSomething(*i);
答案 2 :(得分:2)
为什么不使用类似的东西:
template <typename container, typename T>
bool contains(container& container, T& elt)
{
return (std::find(container.begin(), container.end, elt) != container.end();
}