我試圖找到與CString的std向量進行比較的最有效,最優化和最快速的方法。有問題的字符串區分大小寫。我曾嘗試使用==運算符作爲向量容器,但是這有時會返回誤報。例如,如果一個向量包含順序(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 >'還是別的?也許簡單的'串'? –
2010-10-24 13:42:55
@Tim:'CString'大概是MFC字符串類。 – 2010-10-24 13:51:07
我認爲它的自我解釋...但只是爲了很好它的向量 –
2010-10-24 13:52:58