c++ |
您所在的位置:网站首页 › sort字典序排序 › c++ |
假设我有一个字符串 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 |