boost ::gorith :: содержит std :: vector & lt; long & gt; & Амп; длинное значение

я использую 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) не скомпилируется?

0

Решение

boost::algorithm::contains ожидает два диапазона, диапазон ввода и диапазон для поиска. Вы получаете ошибку, потому что вы предоставляете первый диапазон (std::vector<long>) но не второе (вы даете только один long значение).

Вы бы лучше использовать std::find:

std::find(vector.begin(), vector.end(), value) != vector.end()
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);

компилирует просто отлично.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector