std::forward_list::assign
#include <forward_list>
Gán các phần tử mới cho forward_list, 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
- Danh sách khởi tạo (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.
firsttrỏ đến phần tử đầu tiên,lasttrỏ đế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
- Thay thế nội dung hiện tại:
assign()xóa tất cả các phần tử hiện có trong forward_list và thay thế chúng bằng các phần tử mới được chỉ định. - Thay đổi kích thước:
assign()thay đổi kích thước của forward_list để phù hợp với số lượng phần tử được gán. - Nhiều phiên bả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. - Hiệu quả: 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. - Không làm thay đổi max_size():
assign()không làm thay đổi giá trị trả về bởimax_size(). - Có thể thay đổi iterator:
assign()làm thay đổi (vô hiệu) các iterator trỏ đến forward_list. - Độ phức tạp:
- Độ phức tạp tuyến tính theo
counthoặc kích thước củainitializer_list. - Độ phức tạp tuyến tính theo khoảng cách giữa
firstvàlast.
- Độ phức tạp tuyến tính theo
Ví dụ
#include <iostream>
#include <forward_list>
#include <vector>
int main() {
std::forward_list<int> mylist;
// Phiên bản 1: Gán 5 phần tử có giá trị 10
mylist.assign(5, 10);
std::cout << "mylist after assign(5, 10):";
for (int x : mylist) std::cout << ' ' << x; // Output: mylist 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
mylist.assign({2, 4, 6, 8});
std::cout << "mylist after assign({2, 4, 6, 8}):";
for (int x : mylist) std::cout << ' ' << x; // Output: mylist 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};
mylist.assign(myvector.begin() + 1, myvector.end() - 1);
std::cout << "mylist after assign(myvector.begin() + 1, myvector.end() - 1):";
for (int x : mylist) std::cout << ' ' << x; // Output: mylist 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 của một forward_list khác hoặc một danh sách khởi tạo cho forward_list hiện tại |
| insert_after | Chèn một hoặc nhiều phần tử mới vào sau một vị trí iterator cho trước trong forward_list |