2016-04-27 2 views
1

Supposons que j'ai un vecteur en C++ comme v = ('a','e','i','o','u'). Je veux vérifier si une chaîne est une voyelle ou non en vérifiant simplement si le caractère est dans le vecteur v ou non. Je ne veux pas de code pour cela que je me connais, je suis à la recherche d'une fonction ou d'un mot-clé dans C++ qui est équivalent ci-dessous en python:liste "in" équivalente en C++

list = ['a', 'e', 'i', 'o', 'u'] 
if str in list: 
    #do stuff 

PS: moi aussi savoir si rien d'équivalent à cela existe.

+1

@SamiKuhmonen: pour ce cas particulier, ' std :: set' serait mieux adapté que 'std :: vector' – vsz

+0

@vsz Dans ce cas particulier, j'utiliserais' std :: string'. – CompuChip

+0

@vsz Bien sûr, ce n'est peut-être pas la meilleure structure de données, mais la question parle d'un vecteur. –

Répondre

1

Lien utile:

find Algorithm

exemple est

#include <iostream> 
#include <algorithm> 
#include <vector> 
#include <iterator> 

int main() 
{ 
    int n1 = 3; 
    int n2 = 5; 

    std::vector<int> v{0, 1, 2, 3, 4}; 

    auto result1 = std::find(std::begin(v), std::end(v), n1); 
    auto result2 = std::find(std::begin(v), std::end(v), n2); 

    if (result1 != std::end(v)) { 
     std::cout << "v contains: " << n1 << '\n'; 
    } else { 
     std::cout << "v does not contain: " << n1 << '\n'; 
    } 

    if (result2 != std::end(v)) { 
     std::cout << "v contains: " << n2 << '\n'; 
    } else { 
     std::cout << "v does not contain: " << n2 << '\n'; 
    } 
} 
1

je suggère une meilleure façon de le faire comme: -

std::unordered_set<char> vowels = {'a', 'e', 'i', 'o', 'u'}; 

for (auto c : str)   // str is string you want to search 
{ 
    if(vowels.find(c) != example.end()) { 
     std::cout << "We have string with vowels\n"; 
    } 
} 
0

Si vous avez un vecteur de éléments, voir la question liée au comments.

Cependant, si vous voulez trouver un seul caractère dans une liste de caractères, il peut être tout aussi rapide et simple à utiliser un std::string et find or find_first_of:

std::string vowels = "aeiou"; 
char c = 'e'; 

bool isVowel = vowels.find_first_of(c) != std::string::npos;