2013-03-26 2 views
2

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

ответ

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; 
+0

Да, я должен быть неверно истолкован параметры шаблона функции или неправильно поняли, что передать. Я беру это то, что диапазон имеет в виду контейнер в STL и не итератора. Спасибо за этот хороший пример. – Mushy

+0

@Mushy «Диапазоны» на самом деле больше, чем просто контейнеры, если вы действительно заинтересованы в этом, посмотрите на Boost Range 2.0 docs или google для ключевого слова boostand от Alexandrescu о диапазонах. – us2012

Смежные вопросы