我试图找到与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