c++

您所在的位置:网站首页 sort字典序排序 c++

c++

2023-09-05 23:49| 来源: 网络整理| 查看: 265

假设我有一个字符串 vector 列表:

["a", "c", "鸭子"]

["a", "a", "f"]

[“蜜蜂”、“s”、“xy”]

["b", "a", "a"]

我想用这种方式对 vector 进行排序:

首先根据索引为 0 的元素按字典顺序排序,如果有平局,则根据索引 1 的元素按字典序确定,如果有另一个平局,则根据索引的元素按字典序确定索引 2 处的元素。

所以上面的列表排序后会变成这样:

["a", "a", "f"]

["a", "c", "鸭子"]

["b", "a", "a"]

[“蜜蜂”、“s”、“xy”]

如何实现标准库 sort() 函数来编写一个方法来根据上述描述对 vector 列表进行排序?我正在使用 C++。 谢谢。

一旦每个 vector 的长度已知,编写比较函数就不难了。但是如果我不知道 vector 的长度(但我总是知道它们的长度相同)怎么办? 比较长度为 3 的 vector 的函数:

bool CompareVector(vector first, vector 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的 vector ,会有n个if语句。但是我怎样才能将 if 语句的数量保持为一个变量呢?

这个怎么样:

bool CompareVector(vector first, vector second){ for (int i=0; i< first.size(); i++) if (first[i] < second[i]) return true; return false;

然后我可以调用标准排序函数:

sort(vectorinput.begin(), vectorinput.end(), CompareVector() )

这行得通吗?谢谢。

最佳答案

只需调用 std::sort 即可。它对 vector 的每个元素执行字典顺序比较,这是递归的。

#include #include #include #include int main() { std::vector v{{"a", "c", "duck"}, {"a", "a", "f"}, {"bee", "s", "xy"}, {"b", "a", "a"}}; std::sort(v.begin(), v.end()); for (const auto& v_: v) { for (const auto& s : v_) std::cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3