boost :: algorithm :: contains

Я посмотрел на определение шаблона, и оказалось, что параметрам нужны итераторы для диапазона и предиката. Я передал предикат vector.begin (), ... end () и std :: string, но по-прежнему получаю много ошибок времени компиляции, связанных с множеством элементов библиотеки boost. Могу я увидеть наглядный пример использования boost :: algorithm :: contains, пожалуйста?


person Mushy    schedule 26.03.2013    source источник


Ответы (1)


Это довольно просто, я думаю, вы передаете итераторы, когда должны передавать контейнеры.

  std::string s = "fishing"; 
  std::cout << boost::algorithm::contains(s, "is") << std::endl; 
  std::vector<int> v {1,2,3,5,7,2,7,4,5,8};
  std::vector<int> v2 {5,7,2,7,4};
  std::vector<int> v3 {5,7,2,7,3};
  std::cout << boost::algorithm::contains(v, v2) << std::endl;
  std::cout << boost::algorithm::contains(v, v3) << std::endl;
person us2012    schedule 26.03.2013
comment
Да, я, должно быть, неправильно прочитал параметры функции шаблона или неправильно понял, что передать. Тогда я так понимаю, что диапазон относится к контейнеру в STL, а не к итератору. Спасибо за хороший пример. - person Mushy; 26.03.2013
comment
@Mushy Ranges - это на самом деле больше, чем просто контейнеры, если вы действительно заинтересованы в этом, посмотрите документацию Boost Range 2.0 или Google, чтобы найти ключевую заметку Alexandrescu boostcon о диапазонах. - person us2012; 26.03.2013