J'essaie de trouver le moyen le plus efficace, optimisé et le plus rapide de comparer aux vecteurs std de CString. les chaînes en question sont sensibles à la casse. J'ai essayé d'utiliser l'opérateur == pour le conteneur vectoriel mais cela retourne parfois des faux positifs. Je veux dire par exemple si un vecteur contient des éléments dans l'ordre (a, b, c) et l'autre les a dans l'ordre (b, c, a) l'opérateur == retournera faux même s'ils partagent les mêmes données. Une autre chose est qu'il ne fait pas de comparaison sensible à la casse.Quelle est la meilleure méthode pour comparer deux vecteurs de CString
J'ai pensé à utiliser une boucles imbriquées de base approche comme celle-ci:
//Not Tested
BOOL bMatch = TRUE;
for(int i=0; i<Vec1.size();i++)
{
if(!bMatch)
break;
int nComp=0;
for(int j=0;j<Vec2.size();j++)
{
if(vec1[i].CompareNoCase(Vec2[j])==0)
{
//We have a match--check next item
break;
}
else
{
nComp++;
if(nComp == Vec2.size()-1)
{
//Reached end of vector and no match found
//Vectors don't match
bMatch=FALSE;
}
}
}
}
Le code ci-dessus n'est pas testé et je ne sais pas s'il y a probablement une meilleure façon de parvenir à une telle comparaison, sans la nécessité de en utilisant des boucles imbriquées.
apprécierait des conseils ou de l'aide ...
Veuillez définir "deux vecteurs de CString" - est-ce 'vecteur', 'vecteur ', 'vecteur >' ou autre chose? Peut-être simple 'chaîne'? –
@Tim: 'CString' est probablement la classe de chaînes MFC. –
Je pense que c'est explicite ... mais juste pour être gentil son vecteur –