я использую 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)
не скомпилируется?
boost::algorithm::contains
ожидает два диапазона, диапазон ввода и диапазон для поиска. Вы получаете ошибку, потому что вы предоставляете первый диапазон (std::vector<long>
) но не второе (вы даете только один long
значение).
Вы бы лучше использовать std::find
:
std::find(vector.begin(), vector.end(), value) != vector.end()
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);
компилирует просто отлично.