STARTING
CONTROL STATEMENT
FUNCTION
ARRAY & POINTER
OOP
STL
ITERATORS
OTHER FEATURES
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

[STL] Các hàm thông dụng của Map trong C++

Việc quản lý và xử lý dữ liệu là một phần quan trọng và không thể tránh khỏi. Để giúp cho việc này trở nên dễ dàng hơn, C++ đã cung cấp một loạt các cấu trúc dữ liệu và các hàm thư viện thông dụng, trong đó có Map trong STL (Standard Template Library). Map là một cấu trúc dữ liệu khá mạnh mẽ trong C++, cho phép lưu trữ dữ liệu dưới dạng cặp key-value. Trong chủ đề này, mình sẽ tìm hiểu về các hàm thông dụng của Map trong C++ và cách sử dụng chúng để quản lý dữ liệu một cách hiệu quả.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Map trong STL của C++

Trong STL (Standard Template Library) của C++, std::map là một cấu trúc dữ liệu được sử dụng để lưu trữ các cặp key-value, trong đó key là duy nhất và không thứ tự. Mỗi key chỉ xuất hiện một lần trong std::map và được sắp xếp theo thứ tự tăng dần của key.

std::map thường được triển khai dưới dạng một cây nhị phân cân bằng (balanced binary search tree), thường là cây đỏ-đen (red-black tree). Điều này giúp việc truy cập, chèn, xóa và tìm kiếm các phần tử trong std::map có độ phức tạp trung bình là O(log n), với n là số lượng phần tử trong map.

Một số đặc điểm chính của std::map bao gồm:

Bài viết này được đăng tại [free tuts .net]

  • Dữ liệu được lưu trữ dưới dạng cặp key-value.
  • Key phải duy nhất và không thứ tự.
  • Các phần tử được sắp xếp theo thứ tự tăng dần của key.
  • Có thể truy cập, chèn, xóa và tìm kiếm phần tử trong O(log n) thời gian trung bình.

std::map cung cấp một loạt các phương thức và tính năng mạnh mẽ để quản lý dữ liệu và thực hiện các thao tác trên dữ liệu.

Các hàm thông dụng của Map trong C++

Hàm chèn và cập nhật phần tử trong Map

  • insert(): Hàm này được sử dụng để chèn một cặp key-value vào Map. Nếu key đã tồn tại trong Map, hàm sẽ không thực hiện chèn và trả về một iterator chỉ đến vị trí của key đó.
  • emplace(): Hàm này chèn một cặp key-value vào Map mà không cần tạo đối tượng key và value trước. Nó trả về một iterator chỉ đến vị trí của phần tử được chèn.
  • operator[]: Hàm này được sử dụng để chèn một cặp key-value vào Map hoặc cập nhật giá trị nếu key đã tồn tại. Nếu key không tồn tại, nó sẽ được chèn vào Map với giá trị được cung cấp và trả về một reference đến giá trị.
#include <iostream>
#include <map>

int main() {
    std::map<int, std::string> myMap;

    // Chèn phần tử vào Map
    myMap.insert(std::make_pair(1, "One"));
    // Bài được đăng tại freetuts.net

    // Sử dụng operator[] để cập nhật giá trị hoặc chèn mới
    myMap[2] = "Two";
    
    // Sử dụng emplace để chèn mới
    myMap.emplace(3, "Three");

    return 0;
}

Hàm xóa phần tử

  • erase(): Hàm này được sử dụng để xóa phần tử khỏi Map dựa trên key hoặc iterator. Nếu key không tồn tại trong Map, hàm sẽ không làm gì cả. Nếu sử dụng iterator, hàm sẽ xóa phần tử tại vị trí được chỉ định bởi iterator đó.
#include <iostream>
#include <map>

int main() {
    std::map<int, std::string> myMap = {{1, "One"}, {2, "Two"}, {3, "Three"}};
     // Bài được đăng tại freetuts.net

    // Xóa phần tử dựa trên key
    myMap.erase(2);
    
    return 0;
}

Hàm truy xuất phần tử

  • find(): Hàm này được sử dụng để tìm kiếm phần tử trong Map dựa trên key. Nó trả về iterator đến phần tử nếu key tồn tại trong Map, hoặc trả về end() nếu không tìm thấy.
#include <iostream>
#include <map>

int main() {
    std::map<int, std::string> myMap = {{1, "One"}, {2, "Two"}, {3, "Three"}};
    // Bài được đăng tại freetuts.net

    // Truy xuất phần tử trong Map
    auto it = myMap.find(2);
    if (it != myMap.end()) {
        std::cout << "Value of key 2: " << it->second << std::endl;
    }

    return 0;
}

Hàm kiểm tra sự tồn tại của phần tử

  • count(): Hàm này được sử dụng để kiểm tra sự tồn tại của key trong Map. Nó trả về số lượng phần tử có key xác định trong Map.
#include <iostream>
#include <map>

int main() {
    std::map<int, std::string> myMap = {{1, "One"}, {2, "Two"}, {3, "Three"}};

    // Kiểm tra sự tồn tại của key
    if (myMap.count(2) > 0) {
        std::cout << "Key 2 exists in the map." << std::endl;
    }
    // Bài được đăng tại freetuts.net

    return 0;
}

Hàm lấy kích thước của Map

  • size(): Hàm này trả về số lượng phần tử trong Map.
#include <iostream>
#include <map>
// Bài được đăng tại freetuts.net

int main() {
    std::map<int, std::string> myMap = {{1, "One"}, {2, "Two"}, {3, "Three"}};

    // Lấy kích thước của Map
    std::cout << "Size of the map: " << myMap.size() << std::endl;

    return 0;
}

Hàm duyệt các phần tử trong Map

  • Để duyệt qua tất cả các phần tử trong Map, ta có thể sử dụng vòng lặp for hoặc iterator. Cú pháp for-each loop cho phép ta truy cập mỗi phần tử dưới dạng một cặp key-value.
#include <iostream>
#include <map>

int main() {
    std::map<int, std::string> myMap = {{1, "One"}, {2, "Two"}, {3, "Three"}};
    // Bài được đăng tại freetuts.net

    // Duyệt qua tất cả các phần tử trong Map
    for (const auto& pair : myMap) {
        std::cout << "Key: " << pair.first << ", Value: " << pair.second << std::endl;
    }

    return 0;
}

Ví dụ thực hành về các hàm Map trong C++

Ví dụ về chèn và cập nhật phần tử vào Map

#include <iostream>
#include <map>

int main() {
    std::map<int, std::string> myMap;

    // Chèn phần tử vào Map
    myMap.insert(std::make_pair(1, "One"));
    // Bài được đăng tại freetuts.net

    // Sử dụng operator[] để cập nhật giá trị hoặc chèn mới
    myMap[2] = "Two";

    // Sử dụng emplace để chèn mới
    myMap.emplace(3, "Three");

    // In ra các phần tử trong Map
    for (const auto& pair : myMap) {
        std::cout << "Key: " << pair.first << ", Value: " << pair.second << std::endl;
    }

    return 0;
}

Kết quả:

Key: 1, Value: One
Key: 2, Value: Two
Key: 3, Value: Three

Ví dụ về xóa phần tử khỏi Map

#include <iostream>
#include <map>

int main() {
    std::map<int, std::string> myMap = {{1, "One"}, {2, "Two"}, {3, "Three"}};

    // Xóa phần tử dựa trên key
    myMap.erase(2);
    // Bài được đăng tại freetuts.net

    // In ra các phần tử còn lại trong Map
    for (const auto& pair : myMap) {
        std::cout << "Key: " << pair.first << ", Value: " << pair.second << std::endl;
    }

    return 0;
}

Kết quả:

Key: 1, Value: One
Key: 3, Value: Three

Ví dụ về truy xuất và thay đổi giá trị của phần tử trong Map

#include <iostream>
#include <map>

int main() {
    std::map<int, std::string> myMap = {{1, "One"}, {2, "Two"}, {3, "Three"}};

    // Truy xuất và thay đổi giá trị của phần tử
    auto it = myMap.find(2);
    if (it != myMap.end()) {
        it->second = "New Two";
    }
     // Bài được đăng tại freetuts.net

    // In ra các phần tử trong Map sau khi thay đổi
    for (const auto& pair : myMap) {
        std::cout << "Key: " << pair.first << ", Value: " << pair.second << std::endl;
    }

    return 0;
}

Kết quả:

Key: 1, Value: One
Key: 2, Value: New Two
Key: 3, Value: Three

Ví dụ về kiểm tra sự tồn tại của phần tử trong Map

#include <iostream>
#include <map>

int main() {
    std::map<int, std::string> myMap = {{1, "One"}, {2, "Two"}, {3, "Three"}};
    // Bài được đăng tại freetuts.net

    // Kiểm tra sự tồn tại của key
    if (myMap.count(2) > 0) {
        std::cout << "Key 2 exists in the map." << std::endl;
    }

    return 0;
}

Kết quả:

Key 2 exists in the map.

Ví dụ về lấy kích thước của Map

#include <iostream>
#include <map>
// Bài được đăng tại freetuts.net

int main() {
    std::map<int, std::string> myMap = {{1, "One"}, {2, "Two"}, {3, "Three"}};

    // Lấy kích thước của Map
    std::cout << "Size of the map: " << myMap.size() << std::endl;

    return 0;
}

Kết quả:

Size of the map: 3

Ví dụ về duyệt các phần tử trong Map

#include <iostream>
#include <map>
// Bài được đăng tại freetuts.net

int main() {
    std::map<int, std::string> myMap = {{1, "One"}, {2, "Two"}, {3, "Three"}};

    // Duyệt qua tất cả các phần tử trong Map
    for (const auto& pair : myMap) {
        std::cout << "Key: " << pair.first << ", Value: " << pair.second << std::endl;
    }

    return 0;
}

Kết quả:

Key: 1, Value: One
Key: 2, Value: Two
Key: 3, Value: Three

Kết bài

Trên hết, std::map trong C++ là một công cụ mạnh mẽ trong STL giúp quản lý dữ liệu dưới dạng các cặp key-value. Trong bài viết này, mình đã tìm hiểu về các hàm thông dụng của std::map, bao gồm các hàm chèn, xóa, truy xuất và kiểm tra sự tồn tại của phần tử. Việc hiểu và sử dụng các hàm này giúp cho việc thao tác và xử lý dữ liệu trở nên dễ dàng và linh hoạt hơn trong các ứng dụng C++.

Nhớ rằng std::map là một công cụ mạnh mẽ, và có thể được sử dụng trong nhiều tình huống khác nhau để giải quyết các vấn đề liên quan đến quản lý dữ liệu. Hi vọng rằng thông tin trong bài viết này đã cung cấp cho bạn cái nhìn tổng quan và giúp bạn áp dụng std::map hiệu quả trong các dự án của mình.

Cùng chuyên mục:

Các hàm xử lý mảng đa chiều (array.h) trong C/C++

Các hàm xử lý mảng đa chiều (array.h) trong C/C++

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý chuỗi (string.h) trong C/C++

Các hàm xử lý chuỗi (string.h) trong C/C++

Thread Pools và Parallel Algorithms trong C++

Thread Pools và Parallel Algorithms trong C++

Tạo và quản lý các Multithreading trong C++

Tạo và quản lý các Multithreading trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Try, Catch, và Throw của Exception Handling trong C++

Try, Catch, và Throw của Exception Handling trong C++

Cách sử dụng Lambda Expressions trong C++

Cách sử dụng Lambda Expressions trong C++

Sử dụng weak_ptr trong C++

Sử dụng weak_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng unique_ptr trong C++

Sử dụng unique_ptr trong C++

Tổng quan về Smart Pointers trong C++

Tổng quan về Smart Pointers trong C++

Sử dụng Iterators trong STL của C++

Sử dụng Iterators trong STL của C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng trong List trong C++

[Iterator] Sử dụng trong List trong C++

[STL] Sử dụng Vector trong C++

[STL] Sử dụng Vector trong C++

Tổng quan về Iterators trong C++

Tổng quan về Iterators trong C++

Top