Chuẩn C++
Các chuẩn C ++ là một bộ quy tắc và nguyên tắc xác định các tính năng, cú pháp và ngữ nghĩa của ngôn ngữ. Tổ chức Tiêu chuẩn hóa Quốc tế (ISO) chịu trách nhiệm duy trì và cập nhật các chuẩn C++. Mục đích chính của các chuẩn là đảm bảo tính nhất quán, hiệu quả và khả năng bảo trì trên nhiều nền tảng và trình biên dịch.
Dưới đây là một bản tóm tắt ngắn gọn về các chuẩn C++ khác nhau được phát hành cho đến nay:
- C++98/C++03: Phiên bản chuẩn hóa đầu tiên của C++, đã giới thiệu nhiều tính năng như mẫu, ngoại lệ và Thư viện template chuẩn (STL). C++03 là một bản cập nhật nhỏ cho C++98 với một số sửa lỗi và cải thiện hiệu suất.
- C++11: Một bản nâng cấp lớn cho ngôn ngữ C, giới thiệu các tính năng như:
- Biểu thức lambda:
auto sum = [](int a, int b) -> int { return a + b; };
- Các vòng lặp dựa trên phạm vi:
std::vector<int> numbers = {1, 2, 3, 4}; for (int num : numbers) { std::cout << num << std::endl; }
- Con trỏ thông minh như std::shared_ptr và std::unique_ptr.
- Biểu thức lambda:
- C++14: Một bản cập nhật nhỏ cho C++11, bổ sung các tính năng như:
- Biểu thức lambda chung:
auto generic_sum = [](auto a, auto b) { return a + b; };
- Chữ nhị phân:
int binary_number = 0b1010;
- Biểu thức lambda chung:
- C++17: Một bản cập nhật lớn khác giới thiệu các tính năng như:
- if và switch với bộ khởi tạo:
if (auto it = my_map.find(key); it != my_map.end()) { // sử dụng 'it' ở đây }
- Các ràng buộc có cấu trúc:
std::map<std::string, int> my_map = {{"A", 1}, {"B", 2}}; for (const auto& [key, value] : my_map) { // sử dụng 'key' và 'value' tại đây }
- if và switch với bộ khởi tạo:
- C++20: Bản cập nhật lớn mới nhất cho ngôn ngữ này, với các tính năng như:
- Khái niệm:
template<typename T> concept Addable = requires(T a, T b) { { a + b } -> std::same_as<T>; };
- Phạm vi:
std::vector<int> numbers = {1, 2, 3, 4}; auto doubled = numbers | std::views::transform([](int n) { return n * 2; });
- Coroutine và hơn thế nữa. Hãy nhớ rằng để sử dụng các tính năng ngôn ngữ này, bạn có thể cần định cấu hình trình biên dịch của mình để sử dụng phiên bản chuẩn C++ cụ thể. Ví dụ: với GCC hoặc Clang, bạn có thể sử dụng cờ -std=c++11, -std=c++14, -std=c++17 hoặc -std=c++20.
- Khái niệm: