c – 如何使用区分大小写的元素对std :: list进行排序?
发布时间:2020-12-16 10:27:17 所属栏目:百科 来源:网络整理
导读:这是我目前的代码: #include list#include stringusing std::string;using std::list;int main(){ list string list_; list_.push_back("C"); list_.push_back("a"); list_.push_back("b"); list_.sort();} sort()函数是否根据字符代码对元素进行排序?我希
这是我目前的代码:
#include <list> #include <string> using std::string; using std::list; int main() { list <string> list_; list_.push_back("C"); list_.push_back("a"); list_.push_back("b"); list_.sort(); } sort()函数是否根据字符代码对元素进行排序?我希望在排序完成后,这里的结果是b C. 解决方法
默认比较器(<)使用默认的char_traits< char>将您的列表排序为C a b.
见list::sort. 为了达到所需的顺序a b C,你可以: >使用custom bool istring_less(const string& lhs,const string& rhs) { string::const_iterator lb = lhs.begin(),le = lhs.end(),rb = rhs.begin(),re = rhs.end(); const char lc,rc; for ( ; lb != le && rb != re; ++lb,++rb) { lc = tolower(*lb); rc = tolower(*rb); if (*lc < *rc) return true; if (*lc > *rc) return false; } // if rhs is longer than lhs then lhs<rhs return (rb != re); } ... list.sort(istring_less); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |