0
我正在尝试使用set_symmetric_difference(C++)函数来查找只出现在一个集合中的所有对象,但不是两个都出现。如何编写用于set_symmetric_difference [C++]的字符串比较器?
set<string> set1, set2; //assume filled with strings
vector<string> output;
set_symmetric_difference(set1.begin(), set1.end(), set2.begin(), set2.end(), back_inserter(output), comparator);
我似乎有点不确定如何编写比较器来按字母顺序比较字符串。这是我最好的猜测,到目前为止:
bool comparator(string s1, string s2)
{
for(int i = 0; i < min(length1,length2); i++)
{
if(s1[i] < s2[i]) return true;
else if(s1[i] == s2[i]) continue;
else return false;
}
}
我意识到上面的是行不通的,对于字符串布拉德和布拉德利,因为它会说,他们是等价的。 我只是想知道,这种对true,continue和false的建模是否是为字母顺序设置字符串比较器的正确方法。
我也关心比较ascii值,因为大写字母与小写字母相比可以排除“字母顺序”的顺序,尽管我想这可以很容易地通过在字符串上使用to_lower()来修复。