Код для сортировки std :: vector по длине правильно в C ++ 20? - PullRequest
0 голосов
/ 07 марта 2020

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

2 голосов
/ 07 марта 2020

Ваш код в порядке и компилируется в следующем G CC 10.

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

1 голос
/ 07 марта 2020

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

и другие.

...