假设我有一个字符串向量列表:
[“a”,“c”,“鸭子”]
[“a”,“a”,“f”]
[“蜜蜂”,“s”,“xy”]
[“b”,“a”,“a”]
我想以这种方式对向量进行排序:
首先根据索引 0 处的元素按字典顺序排序,如果存在平局,则将根据索引 1 处的元素按字典顺序进行排序,如果存在另一个平局,则根据索引处的元素按字典顺序确定2.
所以上面的列表经过排序后会如下:
[“a”,“a”,“f”]
[“a”,“c”,“鸭子”]
[“b”,“a”,“a”]
[“蜜蜂”,“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() )
这行得通吗?谢谢。