1

我编写了一个按长度对向量字符串进行排序的代码。不幸的是,我不确定它是否会以这种形式在下一个标准中起作用。这是 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";
    }
}
4

2 回答 2

2

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

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

于 2020-03-07T20:02:13.073 回答
1

当您有一些代码仅使用标准或非常常用的库时,您可以尝试在以下网站上使用更新的编译器和实验性标准版本来编译它:

和别的。

于 2020-03-07T20:08:46.287 回答