说我有字符串的向量的列表:排序向量的列表字典顺序根据优先级
[“一”,“C”,“鸭”]
[“一”,“一个”, “F”]
[ “蜂”, “S”, “XY”]
[ “b”, “一”, “一个”]
欲向量排序通过这种方式:
首先按照索引0处的元素按照字典顺序排序,如果存在联系,则将按照索引1处的元素按字典顺序确定,如果存在另一个联系,则将按照元素的字典顺序确定在索引2
所以上面的列表将被排序之后,如下所示:
[ “一”, “一个”, “F”]
[ “一”, “C”, “duck”]
[“b”,“a”,“a”]
[“bee”,“s”,“xy”]
如何根据上面的描述来实现标准库sort()函数来编写一个向量列表的排序方法?我正在使用C++。 谢谢。
一旦知道每个向量的长度,就不难编写比较函数。但是如果我不知道向量的长度(但我总是知道它们的长度相同)呢? 的长度为3的向量比较功能:
bool CompareVector(vector<string> first, vector<string> second){
if (first[0] < second[0])
return true;
if (first[1] < second[1])
return true;
if (first[2] < second[2])
return true;
return false;
}
因此,对于长度为n的向量,将有N个if语句。但是,我怎样才能保持if语句的数量变量?
如何:
bool CompareVector(vector<string> first, vector<string> second){
for (int i=0; i< first.size(); i++)
if (first[i] < second[i])
return true;
return false;
}
然后我就可以调用标准排序功能:
sort(vector<vector<string> >input.begin(), vector<vector<string> >input.end(), CompareVector())
将这项工作?谢谢。
首先,你需要一个用于'std :: string'的自然排序比较器。那很简单。 –
我的意思是我不想重写排序算法,比如合并排序,因为它已经内置了。但不知何故,我想在我的方法中实现它。 – user3213711
我的意思是,我可能需要定义向量的排序。然后我可以通过传入顺序来调用标准库中的sort()函数。但是,我怎样才能定义代码中的顺序?矢量的长度不一定总是3.但是所有矢量的长度都是相同的。 – user3213711