Khám Phá Thư Viện Tiêu Chuẩn C++

C++ Standard Library là một thành phần quan trọng trong ngôn ngữ lập trình C++. Nó cung cấp nhiều công cụ và chức năng giúp lập trình viên dễ dàng thực hiện các tác vụ phức tạp mà không cần phải viết lại mã từ đầu. Dưới đây là một số điểm chính về thư viện tiêu chuẩn C++.

Thành Phần Chính của Thư Viện Tiêu Chuẩn C++

Các thành phần chính bao gồm:
  • Hỗ trợ ngôn ngữ cơ bản (Core Language Support)
  • Tích hợp hỗ trợ I/O (Input/Output)
  • Công cụ chung (General Utilities)
  • Xử lý chuỗi (Strings)
  • Danh sách và cấu trúc dữ liệu (Containers)
  • Hỗ trợ cho các thuật toán (Algorithms)
  • Bộ lặp (Iterators)
  • Đối tượng hàm (Function Objects)
  • Xử lý số học (Numerics)
  • Quản lý ngày giờ (Date and Time)

Ví dụ về Sử Dụng Stream và String

Dưới đây là một ví dụ minh họa cách sử dụng stream và string để đọc và ghi thông tin vào tệp tin.

#include <fstream>
#include <string>

uint16_t loadData(const std::string& path) {
    std::ifstream fileStream(path);
    if (!fileStream.is_open()) {
        // Ghi log lỗi
        return 0xFFFF;
    }

    char data[5];
    if (fileStream.getline(data, 5).fail()) {
        // Ghi log lỗi đọc định dạng thời gian
        return 0xFFFF;
    }

    uint16_t value = convertStringToUint(data);
    fileStream.close();
    return value;
}

bool saveData(const std::string& path, uint16_t value) {
    std::fstream fileStream;
    fileStream.open(path, std::fstream::in | std::fstream::out | std::fstream::trunc);
    if (!fileStream.is_open()) {
        // Ghi log lỗi mở tệp
        return false;
    }
    fileStream << value;
    fileStream.flush();
    fileStream.close();
    // Ghi log thông báo đã lưu giá trị
    return true;
}

STL: Các Thành Phần Cơ Bản

Thư viện STL (Standard Template Library) bao gồm sáu thành phần cơ bản:
  • Danh sách (Containers): Ví dụ như vector, list, deque, set, map.
  • Thuật toán (Algorithms): Các thuật toán phổ biến như sort, search, copy, erase.
  • Bộ lặp (Iterators): Trung gian giữa danh sách và thuật toán.
  • Đối tượng hàm (Functors): Đối tượng có thể được gọi như hàm.
  • Phụ kiện (Adapters): Sửa đổi giao diện của danh sách, đối tượng hàm hoặc bộ lặp.
  • Bộ phân bổ (Allocators): Quản lý không gian bộ nhớ.

Ví Dụ về Luồng Tương Tác (Thread Interaction)

C++11 giới thiệu luồng tương tác mới với việc sử dụng các biểu thức lambda và quản lý luồng.

#include <thread>
#include <iostream>

void process(int x) {
    std::cout << "Processing: " << x << std::endl;
}

int main() {
    auto task = [](int val) { std::cout << "Task with value: " << val << std::endl; };
    
    std::thread t1(process, 10);
    std::thread t2(task, 20);

    t1.join();
    t2.join();

    return 0;
}

Trong ví dụ trên, chúng ta tạo ra hai luồng hoạt động song song, mỗi luồng thực thi một nhiệm vụ khác nhau. Lưu ý rằng đối tượng luồng không thể sao chép mà chỉ có thể di chuyển.

Khái Niệm Về Auto và Decltype

C++11 cũng giới thiệu các khái niệm như autodecltype giúp đơn giản hóa việc khai báo và xử lý kiểu dữ liệu.

auto calcSum(int a, int b) -> decltype(a + b) {
    return a + b;
}

Trong đoạn mã trên, auto được sử dụng để tự động suy ra kiểu trả về của hàm dựa trên biểu thức bên trong nó. Điều này giúp làm giảm sự phức tạp trong việc khai báo kiểu dữ liệu thủ công.

Thẻ: C++ standard-library STL c++11 threading

Đăng vào ngày 30 tháng 6 lúc 17:42