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::algorithm::contains(std::vector<long>, long)コンパイルされないのですか?

4

2 に答える 2

1

boost::algorithm::contains入力範囲と検索範囲の 2 つの範囲が必要です。最初の範囲 ( ) を指定しているが、2 番目の範囲を指定していない (1 つの値std::vector<long>しか指定していない)ため、エラーが発生します。long

を使用したほうがよいでしょうstd::find

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

boost::algorithm::contains2 つの範囲を取ります。ベクトル内の値を検索しています。

文字列の例では、シーケンスを検索しています"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 に答える