Trong C++, cấu trúc dữ liệu (data structure) là cách tổ chức và lưu trữ dữ liệu trong bộ nhớ để có thể truy cập và thao tác một cách hiệu quả. Dưới đây là một số cấu trúc dữ liệu phổ biến trong C++:
Mảng (Array)
- Mảng là một tập hợp các phần tử có cùng kiểu dữ liệu, được lưu trữ liên tiếp trong bộ nhớ.
- Khai báo:
int arr[5] = {1, 2, 3, 4, 5};
Truy cập phần tử:
int x = arr[2]; // x = 3
Vector
- Vector là một lớp trong thư viện STL (Standard Template Library) của C++, cung cấp một mảng động có thể thay đổi kích thước.
- Khai báo:
#include <vector>
std::vector<int> vec = {1, 2, 3, 4, 5};
Thêm phần tử:
vec.push_back(6); // vec = {1, 2, 3, 4, 5, 6}
Truy cập phần tử:
int x = vec[2]; // x = 3
Ngăn xếp (Stack)
- Stack là một cấu trúc dữ liệu hoạt động theo nguyên tắc LIFO (Last In, First Out).
- Khai báo:
#include <stack>
std::stack<int> myStack;
Thêm phần tử:
myStack.push(1);
myStack.push(2);
Lấy phần tử:
int x = myStack.top(); // x = 2
myStack.pop(); // myStack = {1}
Hàng đợi (Queue)
- Queue là một cấu trúc dữ liệu hoạt động theo nguyên tắc FIFO (First In, First Out).
- Khai báo:
#include <queue>
std::queue<int> myQueue;
Lấy phần tử:
int x = myQueue.front(); // x = 1
myQueue.pop(); // myQueue = {2}
Bảng băm (Hash Table)
- Bảng băm là một cấu trúc dữ liệu sử dụng hàm băm để ánh xạ các khóa vào các giá trị.
- Khai báo:
#include <unordered_map>
std::unordered_map<std::string, int> myMap;
Thêm phần tử:
myMap["apple"] = 1;
myMap["banana"] = 2;
Truy cập phần tử:
int x = myMap["apple"]; // x = 1
Tuple
- Tuple là một cấu trúc dữ liệu cho phép lưu trữ nhiều phần tử có kiểu dữ liệu khác nhau.
- Khai báo:
#include <tuple>
std::tuple<std::string, int, double> myTuple("Alice", 25, 3.14);
Truy cập phần tử:
std::string name = std::get<0>(myTuple); // name = "Alice"
int age = std::get<1>(myTuple); // age = 25
Pair
- Pair là một cấu trúc dữ liệu chứa hai phần tử có kiểu dữ liệu khác nhau.
- Khai báo:
#include <utility>
std::pair<std::string, int> myPair("Alice", 25);
Set
- Set là một cấu trúc dữ liệu chứa các phần tử duy nhất và được sắp xếp theo thứ tự.
- Khai báo:
#include <set>
std::set<int> mySet = {1, 2, 3, 4, 5};
Thêm phần tử:
mySet.insert(6); // mySet = {1, 2, 3, 4, 5, 6}
Truy cập phần tử:
auto it = mySet.find(3); // it trỏ đến phần tử 3
Map
- Map là một cấu trúc dữ liệu chứa các cặp khóa-giá trị, trong đó các khóa là duy nhất.
- Khai báo:
#include <map>
std::map<std::string, int> myMap = {{"apple", 1}, {"banana", 2}};
Thêm phần tử:
myMap["cherry"] = 3; // myMap = {{"apple", 1}, {"banana", 2}, {"cherry", 3}}
Truy cập phần tử:
int x = myMap["apple"]; // x = 1