我有以下代碼,我想根據字符串的最後一個字符對字符串的向量進行排序。我已經完成了以下操作,但排序是按默認規則完成的。爲什麼不是我的重載<運算符不適用於STL排序
這裏的超載<部分:
bool operator<(const string &s1, const string &s2){
return s1.at(s1.size() - 1) < s2.at(s2.size() - 1);
}
這是主要的:
vector <string> nameList;
int n;
cin>>n;
while(n--){
string name;
char str[100];
cin>>str;
name += str;
nameList.push_back(name);
}
sort(nameList.begin(), nameList.end());
for(int i = 0; i < nameList.size(); i++)
cout<<nameList.at(i)<<endl;
守則ideone:LINK
你確定它被稱爲?你的'operator <'是嗎? – Niall 2014-09-22 11:40:43
字符串類[已經有一整套比較運算符](http://en.cppreference.com/w/cpp/string/basic_string/operator_cmp)。相反,您可能需要使用['std :: sort'](http://en.cppreference.com/w/cpp/algorithm/sort)函數,您可以在其中提供自己的謂詞(並將其命名爲更合適的名稱) 。 – 2014-09-22 11:41:29
@JoachimPileborg謝謝!現在通過使用帶有std :: sort [New Code IDEONE](http://ideone.com/OzCeV1)的函數來工作。 – 2014-09-22 11:49:36