2013-03-26 79 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

相關問題