Chuyển tới nội dung chính

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

  1. 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.
  2. assign() thay đổi kích thước của deque để phù hợp với số lượng phần tử được gán.
  3. 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.
  4. 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.
  5. Độ phức tạp:
    • Độ phức tạp tuyến tính theo count hoặc kích thước của initializer_list.
    • Độ phức tạp tuyến tính theo khoảng cách giữa firstlast.

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
resizeThay đổi kích thước của deque