Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Các tính năng mới của C++17

C++17 là phiên bản mới nhất của chuẩn C++ (tính đến thời điểm bài viết). C++11 và C++14 là các phiên bản trước đó. Phiên bản này bổ sung nhiều tính năng vào ngôn ngữ cốt lõi và loại bỏ một số tính năng cũ. C++17 được biết đến như một bản phát hành "đầy đủ tính năng" (feature complete).

Thay đổi thư viện - Tiện ích (utils)

Đây là một trong những tính năng tuyệt vời nhất của C++17. Nó hội tụ các đặc điểm và mẫu thiết kế từ các thư viện khác. Nhiều thư viện con được hợp nhất vào chuẩn.

Các tính năng mới trong thư viện utils:

  • std::variant - Kiểu dữ liệu union an toàn kiểu
  • std::optional - Biểu diễn giá trị có thể có hoặc không
  • std::any - Chứa giá trị bất kỳ kiểu nào
  • std::string_view - Xem chuỗi không sở hữu (zero-copy)
  • std::search - Thuật toán tìm kiếm chung

Thay đổi thư viện - Hệ thống tệp (Filesystem)

Các thư viện chuẩn trước đây thiếu các tính năng quan trọng. Ủy ban C++ đã nâng cấp và hợp nhất nhiều hệ thống vào chuẩn.

  • Làm việc với đối tượng đường dẫn (path object)
  • Hỗ trợ trình biên dịch/thư viện
  • Duyệt đường dẫn (traversing)

Thay đổi thư viện - Thuật toán song song (Parallel Algorithms)

Mở rộng các thuật toán từ C++11/14, mở khóa tính năng tự động song song hóa/hóa vector cho thư viện chuẩn.

  • Cập nhật thuật toán
  • Chính sách thực thi (execution policies)
  • Thuật toán mới

Thuộc tính (Attributes)

C++17 thêm 3 thuộc tính mới:

  • [[maybe_unused]] - Chặn cảnh báo biến không dùng
  • [[fallthrough]] - Chỉ ý fall-through có chủ đích trong switch
  • [[nodiscard]] - Cảnh báo nếu giá trị trả về bị bỏ qua

Đơn giản hóa code

C++17 thêm các tính năng đơn giản hóa:

  • Khởi tạo trong if/switch (init statement)
  • Biến inline (inline variables)
  • Khai báo ràng buộc cấu trúc (structured binding declarations)

Các trình tìm kiếm (Searchers)

Cải tiến các trình tìm kiếm cũ:

  • boyer_moore_horspool_searcher
  • default_searcher
  • boyer_moore_searcher