Trong C++, có những lúc bạn cần lưu trữ hai giá trị liên quan với nhau, chẳng hạn như tên và điểm số, hoặc mã sản phẩm và số lượng. Thay vì tạo một struct riêng, bạn có thể sử dụng kiểu pair trong C++ – một công cụ có sẵn trong thư viện chuẩn giúp gộp hai giá trị thành một biến duy nhất. Trong bài viết này, Code Dream sẽ giúp bạn hiểu rõ về pair, cách khai báo, truy cập và ứng dụng vào thực tế thông qua ví dụ dễ hiểu.
Kiểu pair trong C++ là gì?
Kiểu pair trong C++ là một cấu trúc dữ liệu có sẵn trong thư viện chuẩn <utility>, cho phép bạn gộp hai giá trị lại thành một cặp. Hai giá trị này có thể cùng kiểu hoặc khác kiểu, và được truy cập thông qua hai thành phần thuộc tính là .first và .second.
Thay vì khai báo hai biến riêng biệt, pair giúp bạn quản lý hai giá trị có liên quan trong một biến duy nhất. Điều này không chỉ giúp mã gọn hơn mà còn đặc biệt hữu ích trong các tình huống như:
- Trả về hai giá trị từ một hàm
- Làm việc với danh sách dữ liệu dạng cặp
- Sử dụng trong các cấu trúc dữ liệu như map,vector<pair<kiểu_1, kiểu_2>>, set…
Ví dụ: Bạn cần lưu thông tin một học sinh với tên và điểm số. Thay vì tạo một struct riêng, bạn có thể sử dụng: pair<string, float>
Tuy nhiên hãy lưu ý rằng:
- Kiểu pair nằm trong thư viện <utility>
- Kiểu string không nằm trong <utility>, vì vậy để sử dụng được pair<string, float>, bạn bắt buộc phải include thêm: #include <string>. Nếu thiếu thư viện này, chương trình sẽ báo lỗi dù cú pháp pair là đúng.
Tóm lại, pair là công cụ đơn giản nhưng cực kỳ tiện lợi, giúp bạn dễ dàng xử lý dữ liệu hai chiều trong lập trình C++.

Cách khai báo và sử dụng pair trong C++
Để sử dụng kiểu pair trong C++, bạn cần khai báo từ thư viện <utility>. Pair là một template có hai thành phần: first và second, đại diện cho hai giá trị bạn muốn lưu trữ. Dưới đây là các cách khai báo và sử dụng phổ biến:
Khai báo một biến pair
Để sử dụng được pair, bạn cần thêm thư viện <utility> – đây là thư viện chuẩn trong C++ chứa định nghĩa của kiểu pair. Pair là một template nhận hai kiểu dữ liệu bất kỳ, và tạo thành một kiểu dữ liệu mới chứa hai phần tử: .first và .second.
Cách khai báo:
#include <utility> // Thư viện cung cấp pair
pair<int, string> // Thư viện cung cấp kiểu string
pair<int, string> sinhVien;
Lưu ý quan trọng: Thư viện <utility> chỉ chứa định nghĩa của pair, không chứa kiểu string. Vì vậy, nếu bạn sử dụng pair<int, string> mà không include <string>, chương trình sẽ báo lỗi: string was not declared in this scope
Trong ví dụ trên:
- int là kiểu của phần tử first, đại diện cho mã sinh viên
- string là kiểu của phần tử second, đại diện cho họ tên
Bạn có thể tạo pair với bất kỳ kiểu dữ liệu nào, miễn là C++ hỗ trợ kiểu đó (bao gồm cả pair lồng nhau như pair<int, pair<string, double>>). Việc sử dụng kiểu pair trong C++ giúp bạn dễ dàng định nghĩa những dữ liệu có liên kết logic với nhau mà không cần tạo một struct riêng biệt.
Gán giá trị cho pair
Sau khi khai báo, bạn cần gán giá trị cho pair để sử dụng. Có nhiều cách linh hoạt để gán giá trị, tùy vào phong cách viết mã của bạn.
- Cách 1: Gán trực tiếp từng phần tử
sinhVien.first = 101;
sinhVien.second = “Nguyễn Văn A”;
Cách này rõ ràng, dễ đọc và phù hợp khi bạn cần gán giá trị ở nhiều bước khác nhau.
- Cách 2: Dùng make_pair() để gán nhanh
sinhVien = make_pair(101, “Nguyễn Văn A”);
Đây là cách thường thấy trong thực tế, đặc biệt là khi xử lý trong vòng lặp hoặc các container STL như map, vector.
- Cách 3: Khởi tạo ngay khi khai báo
pair<int, string> sinhVien = {101, “Nguyễn Văn A”};
Lưu ý: Cách dùng dấu { } yêu cầu trình biên dịch hỗ trợ chuẩn C++11 trở lên
Cách này giúp mã gọn và dễ theo dõi, rất lý tưởng khi bạn không cần thay đổi giá trị sau này.
Hãy lưu ý rằng các kiểu dữ liệu trong pair<type1, type2> phải khớp với giá trị bạn gán.
Truy cập dữ liệu trong pair
Một trong những điểm mạnh của kiểu pair trong C++ là khả năng truy xuất dữ liệu cực kỳ đơn giản. Bạn có thể dùng .first và .second để lấy ra giá trị tương ứng:
cout << “Mã sinh viên: ” << sinhVien.first << endl;
cout << “Họ tên: ” << sinhVien.second << endl;
Khi sử dụng pair trong các cấu trúc lớn hơn như vector<pair<…>> hay map, bạn vẫn có thể truy cập dữ liệu theo cách này.
Ứng dụng pair trong container STL
Kiểu pair trong C++ phát huy sức mạnh thực sự khi được sử dụng cùng với các container của thư viện STL như vector, map, set, priority_queue, v.v.
Ví dụ: nếu bạn cần lưu danh sách sinh viên gồm tên và điểm số:
vector<pair<string, double>> danhSach;
danhSach.push_back(make_pair(“An”, 8.5));
danhSach.push_back(make_pair(“Bình”, 9.0));
danhSach.push_back(make_pair(“Chi”, 7.8));
Sau đó, bạn có thể duyệt và truy xuất dữ liệu dễ dàng:
for (auto sv : danhSach) {
cout << “Tên: ” << sv.first << ” – Điểm: ” << sv.second << endl;
}
Việc sử dụng pair trong container giúp tổ chức dữ liệu hai chiều rất hiệu quả, đặc biệt khi bạn cần lưu trữ nhiều cặp thông tin liên quan.

Khi nào nên dùng pair trong C++
Kiểu pair trong C++ là một giải pháp tuyệt vời khi bạn cần lưu trữ hai giá trị liên quan với nhau. Tuy nhiên, không phải lúc nào pair cũng là lựa chọn tối ưu. Việc hiểu rõ khi nào nên dùng và những lưu ý khi sử dụng sẽ giúp bạn lập trình hiệu quả hơn, tránh được những lỗi thường gặp. Do đó, nên dùng pair khi:
- Bạn cần kết hợp hai giá trị có mối liên hệ chặt chẽ, như: tên và điểm số, ID và trạng thái, sản phẩm và giá tiền,…
- Hàm cần trả về hai kết quả cùng lúc mà không muốn tạo một struct riêng.
- Bạn làm việc với STL containers như map, vector, priority_queue – nơi mỗi phần tử mặc định là một pair.
- Bạn muốn viết mã ngắn gọn, trực quan, không cần cấu trúc phức tạp.
Học lập trình C++ cùng Code Dream
Kiểu pair trong C++ là một công cụ cực kỳ hữu ích giúp bạn xử lý dữ liệu hai chiều một cách đơn giản và hiệu quả. Nó giúp mã ngắn gọn, dễ quản lý, đồng thời đóng vai trò quan trọng trong nhiều cấu trúc dữ liệu của C++.
Tại Trung tâm Tin học Code Dream, học viên được tiếp cận C++ theo cách bài bản – dễ hiểu – sát thực tế. Trung tâm sở hữu đội ngũ giảng viên giàu kinh nghiệm, có kiến thức chuyên môn vững vàng và nhiều năm giảng dạy lập trình, đặc biệt là C++ và lập trình thuật toán. Thầy cô không chỉ dạy “cách viết code”, mà còn hướng dẫn học viên cách tư duy, phân tích và tối ưu lời giải.
Một điểm khác biệt của Code Dream là giáo trình giảng dạy được xây dựng riêng, sắp xếp khoa học từ cơ bản đến nâng cao, phù hợp với từng trình độ. Nhờ đó, người mới bắt đầu không bị “ngợp”, còn học viên nâng cao vẫn có đất để rèn luyện chuyên sâu và bứt phá.

Học C++ cùng Code Dream, bạn sẽ:
- Nắm chắc kiến thức nền tảng và mở rộng dần lên các nội dung nâng cao
- Phát triển tư duy lập trình và kỹ năng giải quyết bài toán thực tế
- Tự tin áp dụng C++ trong học tập, thi cử và định hướng nghề nghiệp lâu dài
Nếu bạn đang tìm kiếm một nơi học lập trình C++ nghiêm túc, có định hướng rõ ràng và đồng hành lâu dài, Code Dream chính là điểm khởi đầu đáng tin cậy để xây dựng nền tảng lập trình vững chắc ngay từ hôm nay.





