Thắc mắc về vector<pair<int,int>> và map<int,int>

Chào mọi người,

Như tiêu đề bài viết, mình có một vài thắc mắc về vector<pair<int,int>> và map<int,int>. Câu hỏi của mình là :

  1. Trong bài toán nào thì nên ưu tiên sử dụng vector<pair<int,int>> và trong bài toán nào thì nên ưu tiên sử dụng map<int,int> ?
  2. Sự khác biệt quan trọng nhất giữa hai cách này là gì ? (ví dụ như tài nguyên sử dụng , thời gian xử lý , cấu trúc dữ liệu, … ) ?

Xin cảm ơn

1 Like

Chào bạn,

Vector và map là hai cấu trúc dữ liệu trong ngôn ngữ lập trình C++ có các ứng dụng và đặc điểm riêng. Dưới đây là sự khác biệt quan trọng giữa vector<pair<int, int>> và map<int, int>, cũng như lời khuyên khi nên sử dụng mỗi loại.

  1. Vector<pair<int, int>>:
  • Vector là một mảng động có khả năng thay đổi kích thước. Pair<int, int> là một cặp giá trị kiểu int.
  • Vector<pair<int, int>> thường được sử dụng khi bạn cần lưu trữ một danh sách các cặp giá trị mà việc truy xuất và sắp xếp theo vị trí là quan trọng.
  • Ví dụ sử dụng vector<pair<int, int>>: Lưu trữ các điểm trong không gian 2D với tọa độ (x, y).
  1. Map<int, int>:
  • Map là một cấu trúc dữ liệu dựa trên cặp key-value, trong đó key là duy nhất và được sắp xếp theo thứ tự tăng dần.
  • Map<int, int> thường được sử dụng khi bạn cần lưu trữ các cặp key-value và muốn thực hiện các thao tác truy xuất nhanh chóng dựa trên key.
  • Ví dụ sử dụng map<int, int>: Đếm số lần xuất hiện của các phần tử trong một dãy số.

Sự khác biệt quan trọng nhất giữa vector<pair<int, int>> và map<int, int> là:

  • Tìm kiếm: Trong vector<pair<int, int>>, tìm kiếm dựa trên vị trí và có độ phức tạp O(n) (với n là số lượng phần tử), trong khi đó, trong map<int, int>, tìm kiếm dựa trên key và có độ phức tạp O(log n).
  • Thay đổi kích thước: Vector có thể thay đổi kích thước một cách linh hoạt, trong khi map có kích thước cố định.
  • Sắp xếp: Vector cho phép sắp xếp các phần tử theo vị trí, trong khi map luôn duy trì thứ tự tăng dần của key.
1 Like

Cảm ơn câu trả lời của bạn. :smiling_face_with_three_hearts:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?