std::vector::get_allocator
#include <vector>
allocator_type get_allocator() const noexcept;
Trả về đối tượng bộ cấp phát (allocator) mà vector đang sử dụng để quản lý bộ nhớ.
Tham số
Không có tham số
Giá trị trả về
- Trả về một đối tượng của kiểu
allocator_type
, đại diện cho bộ cấp phát được vector sử dụng.
Đặc điểm
- Hàm được sử dụng chủ yếu khi cần tùy chỉnh bộ cấp phát, kiểm tra thông tin hoặc thực hiện thao tác liên quan đến quản lý bộ nhớ mà vector sử dụng.
- Thông thường, bạn không cần làm việc trực tiếp với bộ cấp phát vì các container như
std::vector
quản lý bộ nhớ tự động. - Tùy chỉnh bộ cấp phát chỉ cần thiết trong các trường hợp tối ưu đặc biệt, ví dụ: khi làm việc với hệ thống nhúng hoặc yêu cầu quản lý bộ nhớ cụ thể.
Ví dụ
#include <iostream>
#include <vector>
#include <memory> // std::allocator
int main() {
// Tạo một vector
std::vector<int> vec{1, 2, 3, 4, 5};
// Lấy bộ cấp phát của vector
std::allocator<int> alloc = vec.get_allocator();
// std::vector<int>::allocator_type alloc = vec.get_allocator();
// Sử dụng bộ cấp phát để cấp phát động một khối bộ nhớ cho 3 phần tử
int* p = alloc.allocate(3);
// Gán giá trị cho các phần tử trong khối bộ nhớ
for (int i = 0; i < 3; ++i) {
alloc.construct(&p[i], i + 1); // Khởi tạo giá trị
}
// In giá trị trong khối bộ nhớ
for (int i = 0; i < 3; ++i) {
std::cout << p[i] << " ";
}
std::cout << '\n';
// Giải phóng bộ nhớ
for (int i = 0; i < 3; ++i) {
alloc.destroy(&p[i]); // Hủy các đối tượng
}
alloc.deallocate(p, 3); // Giải phóng khối bộ nhớ
return 0;
}