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()來修復。