Home C&C++函数库 c++ 语法 程序源码 Linux C库

std::

deque::assign

公众成员函数  <deque>

C++98: range (1)
template <class InputIterator>
  void assign (InputIterator first, InputIterator last);
fill (2)
void assign (size_type n, const value_type& val);
分配容器的内容
为deque容器分配新内容,替换其当前内容,并相应地修改其大小。


C++98:
在range version(1)中,新内容是由first和last之间的范围内的每个元素, 以相同的顺序构造的元素。

在fill版本(2)中,新内容有n个元素,每个元素都被初始化为val的副本。

如果需要,容器使用它的内部分配器来分配额外的存储空间。

在调用之前容器中保存的所有元素都被销毁,并被新构造的元素替换(没有对元素进行赋值)。

☲  参数


first, last
输入迭代器初始和最终位置的范围。
使用的范围是[first,last),它包括first和last之间的所有元素, 包括first所指向的元素,但不包括last所指向的元素。
函数模板实参InputIterator必须是一个输入迭代器类型,该类型指向可以构造value_type对象的类型的元素。
n
容器的新大小)。
成员类型size_type是一个无符号整型。
val
填充容器的值.
容器中的n个元素的每一个都将被初始化为这个值的副本。
成员类型value_type是容器中元素的类型,在deque中定义为其第一个模板形参(T)的别名。
il
一个initializer_list对象。
这些对象是由初始化列表声明符自动构造的。
成员类型value_type是容器中元素的类型,在 deque中定义为其第一个模板形参(T)的别名。

☉  返回值



none

☣  示例



// 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

✥ 复杂度



初始和最终大小线性(析构,构造).

☣ 迭代器的有效性



与此容器相关的所有迭代器、指针和引用将失效。

⇄ 数据竞争


访问所有复制的元素。
容器被修改;
所有包含的元素都被修改。

☂ 异常安全性



基本保证:如果抛出异常,则容器处于有效状态。
如果allocator_traits::construct不支持元素结构的适当参数, 或者如果[first,last)指定的范围无效,它将导致未定义的行为。

🍄  另请参阅



deque::operator= 等号重载(公众成员函数)
deque::resize 改变大小 (公众成员函数)

联系我们 免责声明 关于CandCplus 网站地图