c++ - 在C++ 20中按长度排序std::vector <std::string>的代码是否正确?

标签 c++ sorting stl c++20 std-ranges

我写了一个按长度对 vector 字符串进行排序的代码。不幸的是,我不确定它是否可以以此形式在下一个标准中工作。这是C++ 20中正确的代码吗?

#include <algorithm>
#include <iostream>
#include <string>
#include <ranges> 
#include <vector>

int main() {
    std::vector<std::string> words = {"std", "vector", "string", "optional", "clamp"};

    // C++11
    // std::sort(words.begin(), words.end(), 
    //     [](auto& lhs, auto& rhs) { return lhs.length() < rhs.length(); });

    // maybe C++20?
    using namespace std::ranges;
    sort(words, {}, size); // or 'sort(words, less{}, size);'

    for (auto& word : words) {
        std::cout << word << "\n";
    }
}

最佳答案

您的代码很好,可以在即将到来的GCC 10下编译。

正如@Ayxan指出的那样,C++ 20仍将具有通常的算法,因此如果不需要,您无需更改代码。

关于c++ - 在C++ 20中按长度排序std::vector <std::string>的代码是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60581613/

相关文章:

c++ - 如何使用 boost::vf2_subgraph_iso 获取边缘映射

c++ - 将 qi::hex 解析器限制为 2 个字符

C++ - const 在这里代表什么?

sorting - 当排序更改时,dojo datagrid 将使页面变为 "jump"

java - 如何在java中对字符串类型的日期进行排序

c++ - 如何按元素出现次数将多重集排序到容器

c++ - 模型在窗口调整 OpenGL 3.2 大小时拉伸(stretch)

c - 对除第一个元素之外的所有内容进行排序,qsort C

c++ - 插入 vector 后内存损坏

模板函数 <queue> 中的 C++ 内存错误