【问题标题】:boost::algorithm::containsboost::算法::包含
【发布时间】:2013-03-16 11:12:15
【问题描述】:

我查看了模板定义,参数似乎需要跨范围和谓词的迭代器。我传入了一个vector.begin()、...end() 和一个std::string 谓词,但仍然得到许多与许多boost 库项目相关的编译时错误。请给我看一个使用 boost::algorithm::contains 的清晰示例吗?

【问题讨论】:

    标签: c++ boost contains


    【解决方案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;
    

    【讨论】:

    • 是的,我一定是误读了模板函数参数或误解了要传入的内容。我认为范围指的是 STL 中的容器而不是迭代器。谢谢你的好例子。
    • @Mushy "Ranges" 实际上不仅仅是容器,如果您真的对此感兴趣,请查看 Boost Range 2.0 文档或 google,了解 Alexandrescu 关于范围的 boostcon 主题演讲。
    猜你喜欢
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 2020-10-16
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多