0

我正在使用boost::algorithm::contains(std::vector<long>, long value)并收到许多错误。

std::vector<long> instance;
long byteIndex;
// (Perhaps more code?...)
boost::algorithm::contains(instances, byteIndex);

我不明白这个编译器错误C2039: 'type' : is not a member of 'boost::range_const_iterator<C>'

我阅读了模板类并看到了使用 std::string 的演示

std::string s = "Boris Schäling"; 
boost::algorithm::contains(s, "is");

除了我使用不同的类型外,我不认为我对 boost 的使用有任何不同。知道为什么boost::algorithm::contains(std::vector<long>, long)不编译吗?

4

2 回答 2

1

boost::algorithm::contains需要两个范围,输入范围和要搜索的范围。您收到错误是因为您提供了第一个范围 ( std::vector<long>) 而不是第二个范围 (您只提供了一个long值)。

你最好使用std::find

std::find(vector.begin(), vector.end(), value) != vector.end()
于 2013-04-02T19:12:45.117 回答
1

boost::algorithm::contains需要两个范围。您正在向量中搜索一个值。

在您的字符串示例中,您正在搜索序列"is"。如果您要搜索'i'(不是一个序列,一个值),您会得到与您使用vector<long>.

编码:

std::vector<long> v { 1,2,3,4,5 };
std::vector<long> v1 { 3, 4 };
boost::algorithm::contains(v, v1);

编译就好了。

于 2013-04-02T19:17:53.210 回答