Я просмотрел определение шаблона, и параметры, похоже, хотят, чтобы итераторы находились в диапазоне и предикате. Я передал vector.begin(), ... end() и предикат std :: string, но все же получаю много ошибок времени компиляции, связанных с множеством элементов библиотеки boost. Могу ли я увидеть ясный пример использования boost :: algorithm :: содержит, пожалуйста?boost :: algorithm :: содержит
2
A
ответ
10
Это довольно просто, я думаю, вы передаете итераторы, когда вам нужно проходить контейнеры.
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;
Да, я должен быть неверно истолкован параметры шаблона функции или неправильно поняли, что передать. Я беру это то, что диапазон имеет в виду контейнер в STL и не итератора. Спасибо за этот хороший пример. – Mushy
@Mushy «Диапазоны» на самом деле больше, чем просто контейнеры, если вы действительно заинтересованы в этом, посмотрите на Boost Range 2.0 docs или google для ключевого слова boostand от Alexandrescu о диапазонах. – us2012