2010-10-09 6 views
2

J'ai besoin d'un conteneur dans lequel je peux vérifier si une séquence d'éléments est présente ou non. Même chose que la correspondance de sous-chaîne, uniquement pour les collections génériques. Je sais que ce n'est pas difficile à écrire, mais si elle est déjà implémentée dans une lib, je ne m'en soucierais pas (peut-être que Boost a quelque chose comme ça?)C++ vérifier si une liste contient une sous-liste

Répondre

9

Tout conteneur de séquence fera l'affaire. Vous avez juste besoin d'utiliser std :: algorithme de recherche pour faire la recherche de la sous-liste:

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

oh mon dieu comment ai-je manqué celui-ci :). Merci. –

+1

@ Tamás: Si vous pensez que c'est la réponse à votre question, votez-la et ACCEPTEZ-la en cliquant sur le v-like sous le nombre de réponses. Merci –

+0

@Armen, ouais, ça ne me permettait pas de l'accepter aussi vite, donc j'ai dû attendre. –

Questions connexes