Правильный ли код для сортировки 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 по-прежнему будет иметь обычные алгоритмы, поэтому вам не нужно менять свой код, если вы этого не хотите.
Если у вас есть код, использующий только стандартные или очень часто используемые библиотеки, вы можете попробовать скомпилировать его с помощью более новых компиляторов и экспериментальных стандартных версий на таких сайтах, как:
- Обозреватель компилятора - https://godbolt.org/
- Coliru ("COmpile, LInk and RU") - http://coliru.stacked-crooked.com/
и другие.