Je rencontre des problèmes pour trouver plusieurs éléments du même élément dans un vecteur. Je voudrais trouver des éléments en double tous les 3 index. S'il y a un doublon, les 2 éléments suivants vont dans un nouveau vecteur.Comment trouver plusieurs éléments dans un fichier std :: vector
std::vector<std::wstring> wsBuf = {"one" , "three", "five", "two", "one","ten", "nine"};`
std::vector<std::wstring> wsWriteFile;
for(DWORD i = 0; i < wsBuf.size(); ++i)
{
std::vector<std::wstring>::iterator it = wsReadFile.begin(); //wsReadFile has an enumerated list
it = std::find(it, wsReadFile.end(), wsBuf[i]);
if(it != wsReadFile.end())
{
DWORD index = std::distance(wsReadFile.begin(), it);
if(index < wsReadFile.size())
{
wsWriteFile.push_back(wsReadFile[index];
wsWriteFile.push_back(wsReadFile[index + 1];
wsWriteFile.push_back(wsReadFile[index + 2];
}
}
}
Ceci ne trouvera que l'index zéro mais pas le second. Est-ce que quelqu'un a une idée de comment trouver le second index avec les fonctions C++ 11?
je trouve un moyen de le faire sans C++ 11 fonctions
`for(DWORD i = 0; i < wsBuf.size(); ++i)
{
DWORD j = 0;
do
{
if(wsBuf[i] == wsReadFile[j])
{
wsWriteFile.push_back(wsReadFile[index];
wsWriteFile.push_back(wsReadFile[index + 1];
wsWriteFile.push_back(wsReadFile[index + 2];
}
j+=3;
}while(j < wsReadFile.size());
}`
Si vous voulez supprimer les doublons * *, puis 'std :: sort' le vecteur puis [std :: uniques] (http://en.cppreference.com/w/cpp/algorithm/unique) avez-vous couvert. Mais ce n'est pas tout à fait clair à partir de votre question * exactement * ce que vous voulez faire. –
Copie possible de [comment trouver des doublons dans std :: vector et renvoyer une liste d'entre eux?] (Https://stackoverflow.com/questions/17892896/how-to-find-duplicates-in-stdvectorstring-and- return-a-list-of-them) –
Ron
@JesperJuhl désolé pour la confusion que j'ai édité ma réponse –