STL (Standard Template Library)
vector
, map
), алгоритмы (sort
, find
), итераторы.std::vector<int> v = {3, 1, 4};
std::sort(v.begin(), v.end());
Шаблоны (Templates)
template<typename T>
T max(T a, T b) { return a > b ? a : b; }
Автоматический вывод типов (auto
)
auto x = 42; // int
Лямбда-выражения
std::sort(v.begin(), v.end(), [](int a, int b) { return a > b; });
Умные указатели (unique_ptr
, shared_ptr
)
std::unique_ptr<MyClass> ptr(new MyClass());
Move-семантика
std::vector<std::string> v1;
std::vector<std::string> v2 = std::move(v1); // Быстрое перемещение
Обобщенные лямбды
auto generic_lambda = [](auto x, auto y) { return x + y; };
constexpr
расширения
constexpr int factorial(int n) {
return n <= 1 ? 1 : n * factorial(n - 1);
}
Structured bindings
auto [key, value] = std::make_pair("id", 42);
std::optional
std::optional<int> find(int id) { /* ... */ }
if constexpr
template<typename T> auto process(T val) {
if constexpr (std::is_integral_v<T>) { /* ... */ }
}
Concepts
template<typename T>
concept Addable = requires(T a, T b) { a + b; };
Ranges
auto result = numbers | std::views::filter(is_even)
| std::views::transform(square);
Coroutines
generator<int> range(int start, int end) {
for (int i = start; i < end; ++i)
co_yield i;
}
std::mdspan
- многомерные массивыstd::print
- улучшенный выводthis
- упрощение CRTPЭволюция C++ идет по пути:
optional
)constexpr
, шаблоны)Каждая версия сохраняет обратную совместимость, добавляя современные возможности. C++20 можно считать поворотным моментом, когда язык стал значительно удобнее без потери производительности.