Я пытаюсь найти наиболее эффективный, оптимизированный и быстрый способ сравнить с std векторами CString. строки, о которых идет речь, чувствительны к регистру. Я попытался использовать оператор == для векторного контейнера, но это иногда возвращает ложные срабатывания. Я имею в виду, например, если один вектор содержит элементы в порядке (a, b, c), а другой имеет их в порядке (b, c, a), оператор == возвращает false, даже если они используют одни и те же данные. Другое дело, что он не делает случайного сравнения.Что является лучшим методом для сравнения двух векторов CString
Я думал об использовании основного вложенных циклов подходить так:
//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;
}
}
}
}
Приведенный выше код не проверяется, и я не уверен, если есть, вероятно, лучший способ добиться такого сравнения без необходимости используя вложенные циклы.
бы признателен за любые советы или помощь ...
Пожалуйста, определите «два вектора CString» - это 'vector', 'vector ', 'vector >' или что-то еще? Может быть, простая строка? –
@Tim: 'CString', по-видимому, является классом строк MFC. –
Я думаю, что он сам объяснительный ... но просто быть хорошим его вектором –