public member function
<deque>

std::deque::assign

range (1)
template <class InputIterator>  void assign (InputIterator first, InputIterator last);
fill (2)
void assign (size_type n, const value_type& val);
range (1)
template <class InputIterator>  void assign (InputIterator first, InputIterator last);
fill (2)
void assign (size_type n, const value_type& val);
initializer list (3)
void assign (initializer_list<value_type> il);
Assign container content
Assigns new contents to the deque container, replacing its current contents, and modifying its size accordingly.

In the range version (1), the new contents are elements constructed from each of the elements in the range between first and last, in the same order.

In the fill version (2), the new contents are n elements, each initialized to a copy of val.

If needed, the container uses its internal allocator to allocate additional storage.
In the range version (1), the new contents are elements constructed from each of the elements in the range between first and last, in the same order.

In the fill version (2), the new contents are n elements, each initialized to a copy of val.

In the initializer list version (3), the new contents are copies of the values passed as initializer list, in the same order.

If there are changes in storage, the internal allocator is used (through its traits). It is also used to destroy all existing elements, and to construct the new ones.

Any elements held in the container before the call are destroyed and replaced by newly constructed elements (no assignments of elements take place).

引數

first, last
Input iterators to the initial and final positions in a sequence. The range used is[first,last),它包括firstlast之間的所有元素,包括first指向的元素,但不包括last指向的元素。
函式模板引數InputIteratorshall be an input iterator type that points to elements of a type from whichvalue_type物件的型別的元素。
n
New size for the container.
成員型別size_type是一種無符號整型型別。
val
Value to fill the container with. Each of the n elements in the container will be initialized to a copy of this value.
成員型別value_type是容器中元素的型別,在 deque 中定義為其第一個模板引數(T).
il
一個 initializer_list 物件。編譯器將自動從初始化列表宣告器建立此類物件。
成員型別value_type是容器中元素的型別,在 deque 中定義為其第一個模板引數(T).

返回值



示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// deque::assign
#include <iostream>
#include <deque>

int main ()
{
  std::deque<int> first;
  std::deque<int> second;
  std::deque<int> third;

  first.assign (7,100);             // 7 ints with a value of 100

  std::deque<int>::iterator it;
  it=first.begin()+1;

  second.assign (it,first.end()-1); // the 5 central values of first

  int myints[] = {1776,7,4};
  third.assign (myints,myints+3);   // assigning from array.

  std::cout << "Size of first: " << int (first.size()) << '\n';
  std::cout << "Size of second: " << int (second.size()) << '\n';
  std::cout << "Size of third: " << int (third.size()) << '\n';
  return 0;
}
輸出
Size of first: 7
Size of second: 5
Size of third: 3


複雜度

Linear in initial and final sizes (destructions, constructions).

迭代器有效性

所有與該容器相關的迭代器、指標和引用都將失效。

資料競爭

All copied elements are accessed.
The container is modified.
所有包含的元素都被修改。

異常安全

Basic guarantee: if an exception is thrown, the container is in a valid state.
If allocator_traits::construct is not supported with the appropriate arguments for the element constructions, or if the range specified by[first,last)無效,則會導致未定義行為

另見