C ++检查列表是否包含子列表

时间:2010-10-09 16:28:12

标签: c++

我需要一个容器,我可以在其中检查是否存在一系列元素。与子串匹配相同,仅用于泛型集合。我知道写起来并不难,但是如果它已经在某些lib中实现了,我就不会打扰了(也许Boost有这样的东西?)

3 个答案:

答案 0 :(得分:10)

任何序列容器都可以。您只需使用std :: search算法搜索子列表:

vector<int> sequence = ...;
vecter<int> sublist = ...;

vector<int>::iterator pos = std::search(
    sequence.begin(), sequence.end(), 
    sublist.begin(), sublist.end());

if(pos == sequence.end()) 
    // not fount
else 
    // found at pos

答案 1 :(得分:2)

你想要std::search吗?

答案 2 :(得分:0)

STL的mismatch算法对于通用容器几乎是strcmp

http://www.cplusplus.com/reference/algorithm/mismatch/