std::vector::assign
#include <vector>
// Phiên bản 1: Gán các phần tử từ một dãy các giá trị
void assign(size_type count, const value_type& value);
// Phiên bản 2: Gán các phần tử từ một initializer list
void assign(initializer_list<value_type> ilist);
// Phiên bản 3: Gán các phần tử từ một iterator range
template <class InputIterator>
void assign(InputIterator first, InputIterator last);
Gán nội dung mới cho vector, thay thế nội dung hiện tại và sửa đổi kích thước của vector cho phù hợp.
Tham số
count
- Số lượng phần tử cần gán (phiên bản 1).
value
- Giá trị của các phần tử cần gán (phiên bản 1).
ilist
- Một danh sách khởi tạo các phần tử muốn gán (phiên bản 2).
first, last
- Iterator xác định phạm vi các phần tử cần gán (phiên bản 3).
first
trỏ đến phần tử đầu tiên,last
trỏ đến phần tử sau phần tử cuối cùng (past-the-end).
Giá trị trả về
Không có giá trị trả về
Đặc điểm
- Xóa toàn bộ nội dung của vector trước khi thêm các phần tử mới.
- Nếu kích thước của vector lớn hơn số phần tử mới được gán, các phần tử thừa sẽ bị xóa.
- Nếu vector có bộ nhớ được cấp phát đủ lớn, nó sẽ tái sử dụng bộ nhớ thay vì cấp phát mới.
assign()
không giữ lại nội dung vector trước đó. Nếu bạn muốn thêm giá trị mà không xóa, hãy sử dụnginsert()
hoặcpush_back()
.- Việc sử dụng
assign()
có thể làm tăng kích thước của vector và kích hoạt việc cấp phát bộ nhớ mới nếu cần thiết. - Gán giá trị lặp lại (
assign(size_type count, const T& value)
)- Thay thế toàn bộ nội dung của vector bằng
count
phần tử, mỗi phần tử có giá trị làvalue
.
- Thay thế toàn bộ nội dung của vector bằng
- Gán từ một phạm vi lặp (
assign(InputIt first, InputIt last)
)- Gán giá trị từ phạm vi
[first, last)
(không bao gồmlast
) vào vector. - Phạm vi này có thể đến từ một container khác hoặc từ mảng.
- Gán giá trị từ phạm vi
- Gán từ một danh sách khởi tạo (
assign(std::initializer_list<T> ilist)
)- Gán các giá trị từ danh sách khởi tạo vào vector.
Ví dụ
Gán giá trị lặp lại
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec;
vec.assign(5, 42); // Gán 5 phần tử có giá trị 42
for (int v : vec) {
std::cout << v << " "; // Kết quả: 42 42 42 42 42
}
return 0;
}
Gán từ một phạm vi lặp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec1 = {1, 2, 3, 4, 5};
std::vector<int> vec2;
vec2.assign(vec1.begin() + 1, vec1.end() - 1); // Gán giá trị từ phạm vi [2, 4)
for (int v : vec2) {
std::cout << v << " "; // Kết quả: 2 3 4
}
return 0;
}
Gán từ danh sách khởi tạo
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec;
vec.assign({10, 20, 30, 40});
for (int v : vec) {
std::cout << v << " "; // Kết quả: 10 20 30 40
}
return 0;
}
Các hàm liên quan
= | Gán nội dung |
resize | Thay đổi kích thước vector |