我正在尝试对从.txt读入的极大字符串进行排序并对它们进行排序。到目前为止,我可能能够按字母顺序对它们进行排序,但我无法弄清楚如何按长度对它们进行排序,然后按字母顺序对它们进行排序。到目前为止,这是我的代码,希望有人对此有所了解。谢谢!
<div ng-controller="myCtrl">
<input type="text" class="form-control" ng-model="input"
bs-options="name for name in names" bs-typeahead>
</div>
答案 0 :(得分:2)
在您的比较中,您可以更改为以下内容,以便首先按长度排序,如果长度相等,则按字母顺序排序:
if( dataSetForSort[i].size() < dataSetForSort[j].size() ||
(dataSetForSort[i].size() == dataSetForSort[j].size() &&
dataSetForSort[i] < dataSetForSort[j]) )
答案 1 :(得分:1)
您需要定义一个返回正确比较的lessthan
函数。
bool lessthan( const std::string & left_hand_side, const std::string & right_hand_side )
{
// sort by length
if( left_hand_side.length() < right_hand_side.length() ) return true;
if( left_hand_side.length() > right_hand_side.length() ) return false;
// sort by alphabet
if( left_hand_side < right_hand_side ) return true;
if( left_hand_side > right_hand_side ) return false;
return false;
}
这可以由std :: sort使用,或者根据您的要求制作成运算符