Élément spécifique
Le compte est la manière habituelle de procéder :
#include
...
if (count (test.begin(), test.end(), "YES") > 1)
std::cerr << "positif\n";
Si vous avez besoin de plus de performance, vous pouvez le faire de manière classique :
bool existe = false;
for (const auto& v : test) {
if (v == "YES") {
if (existe) {
std::cerr << "positif\n";
break;
}
else existe = true;
}
}
N'importe quel élément plusieurs fois
Pour de grands vecteurs, essayez std::set
:
std::set existe;
for (const auto &v : test) {
if (!existe.insert(v).second)
std::cerr << "positif\n";
}
Dans cette approche, si vous voulez également pouvoir reconnaître si vous avez déjà mentionné sa non-unicité, vous pouvez utiliser std::multiset
:
const std::multiset comptes (test.begin(), test.end());
for (const auto &v: test)
if (comptes.count (v) == 2) std::cerr << "meh\n";
Si le conteneur est petit, et que vous voulez juste voir si un élément est présent plus d'une fois :
auto multitimes = [&test] (const std::string &str) {
return count(test.begin(),test.end(),str)>1;
};
if (any_of (test.begin(), test.begin(), multitimes))
std::cerr << "quelque chose était là plus d'une fois\n";