std::deque::assign
#include <deque>
Gán các phần tử mới cho deque, thay thế nội dung hiện tại của nó.
// 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);
Tham số
count
- Số lượng phần tử cần gán.
value
- Giá trị của các phần tử cần gán.
ilist
- initializer_list chứa các phần tử cần gán.
first, last
- Iterator xác định phạm vi các phần tử cần gán.
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
assign()
xóa tất cả các phần tử hiện có trong deque và thay thế chúng bằng các phần tử mới được chỉ định.assign()
thay đổi kích thước của deque để phù hợp với số lượng phần tử được gán.assign()
cung cấp nhiều phiên bản khác nhau để gán giá trị từ các nguồn khác nhau, bao gồm lặp lại một giá trị,initializer_list
và iterator range.- Việc sử dụng
assign()
thường hiệu quả hơn so với việc xóa tất cả các phần tử rồi sau đó chèn các phần tử mới vào. - Độ phức tạp:
- Độ phức tạp tuyến tính theo
count
hoặc kích thước củainitializer_list
. - Độ phức tạp tuyến tính theo khoảng cách giữa
first
vàlast
.
- Độ phức tạp tuyến tính theo
Ví dụ
#include <iostream>
#include <deque>
#include <vector>
int main() {
std::deque<int> myDeque;
// Phiên bản 1: Gán 5 phần tử có giá trị 10
myDeque.assign(5, 10);
std::cout << "myDeque after assign(5, 10):";
for (int x : myDeque) std::cout << ' ' << x; // Output: myDeque after assign(5, 10): 10 10 10 10 10
std::cout << '\n';
// Phiên bản 2: Gán các phần tử từ initializer list
myDeque.assign({2, 4, 6, 8});
std::cout << "myDeque after assign({2, 4, 6, 8}):";
for (int x : myDeque) std::cout << ' ' << x; // Output: myDeque after assign({2, 4, 6, 8}): 2 4 6 8
std::cout << '\n';
// Phiên bản 3: Gán các phần tử từ một vector
std::vector<int> myVector = {1, 3, 5, 7, 9};
myDeque.assign(myVector.begin() + 1, myVector.end() - 1);
std::cout << "myDeque after assign(myVector.begin() + 1, myVector.end() - 1):";
for (int x : myDeque) std::cout << ' ' << x; // Output: myDeque after assign(myVector.begin() + 1, myVector.end() - 1): 3 5 7
std::cout << '\n';
return 0;
}
Các hàm liên quan
= | Gán nội dung |
resize | Thay đổi kích thước của deque |