2013-03-26 55 views
2

我查看了模板定义,并且参数似乎希望遍历范围和谓词的迭代器。我传入了一个vector.begin(),... end()和一个std :: string谓词,但仍然得到许多与一系列boost库项目相关的编译时错误。我可以看到使用boost :: algorithm :: contains的明确示例吗?boost :: algorithm :: contains

回答

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 2013-03-26 15:38:51

+0

@Mushy“范围”实际上不仅仅是容器,如果您真的对此感兴趣,请参阅Boost Range 2.0文档或google关于Alexandrescu关于范围的boostcon主题演讲。 – us2012 2013-03-26 15:41:07