Правильный ли код для сортировки std::vector <std :: string> по длине в C++20?

Я написал код, который сортирует векторные строки по длине. К сожалению, я не уверен, будет ли он работать в следующем стандарте в этой форме. Это правильный код на 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";
    }
}

2 ответа

Решение

Ваш код в порядке и компилируется под грядущий GCC 10.

Как указывает @Ayxan, C++20 по-прежнему будет иметь обычные алгоритмы, поэтому вам не нужно менять свой код, если вы этого не хотите.

Если у вас есть код, использующий только стандартные или очень часто используемые библиотеки, вы можете попробовать скомпилировать его с помощью более новых компиляторов и экспериментальных стандартных версий на таких сайтах, как:

и другие.

Другие вопросы по тегам