STL deque的方法assign(3)

原文地址:http://www.cplusplus.com/reference/deque/deque/assign/
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);
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.

调整deque容器的内容,替换其中的内容,并修改其大小。


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.
新的内容从范围first到last。

In the fill version (2), the new contents are n elements, each initialized to a copy of val.
新的内容一共有n个元素,每个元素的值都是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).

所有之前的元素都将被销毁以及替换成新的元素。

例子:

#include <iostream>
#include <deque>
#include <vector>
using namespace std;
int main()
{
	deque<int> di{1,2,3,4,5};
	cout<<"at first "<<endl;
	cout<<"di= ";
	for(int i:di)
		cout<<i<<" ";
	cout<<endl;
	
	vector<int> vi{10,20,30};
	di.assign(vi.begin(),vi.end());
	cout<<"after di.assign(vi.begin(),vi.end()) "<<endl;
	cout<<"di= ";
	for(int i:di)
		cout<<i<<" ";
	cout<<endl;
	
	di.assign(7,188);
	cout<<"after di.assign(7,188) "<<endl;
	cout<<"di= ";
	for(int i:di)
		cout<<i<<" ";
	cout<<endl;
	

	di.assign({111,222,333});
	cout<<"after di.assign({111,222,333}) "<<endl;
	cout<<"di= ";
	for(int i:di)
		cout<<i<<" ";
	cout<<endl;
	


}



Parameters

first, last
Input iterators to the initial and final positions in a sequence. The range used is [first,last), which includes all the elements between first and last, including the element pointed by first but not the element pointed by last.

The function template argument InputIterator shall be an input iterator type that points to elements of a type from whichvalue_type objects can be constructed.

序列用于替换的位置,范围为[first,last)。

//今后的翻译将以简洁为主,翻译其主要意思,不再每句翻译。

n

New size for the container.

Member type size_type is an unsigned integral type.

n为新容器的大小。

val
Value to fill the container with. Each of the n elements in the container will be initialized to a copy of this value.

Member type value_type is the type of the elements in the container, defined in deque as an alias of its first template parameter (T).

填满容器元素的值val.

il
An initializer_list object. The compiler will automatically construct such objects from initializer list declarators.

Member type value_type is the type of the elements in the container, defined in deque as an alias of its first template parameter (T).

一个初始化列表对象。

Return value

none

Example

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;
}

Output:
Size of first: 7
Size of second: 5
Size of third: 3

Complexity

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

Iterator validity

All iterators, pointers and references related to this container are invalidated.

Data races

All copied elements are accessed.
The container is modified.
All contained elements are modified.

Exception safety

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) is not valid, it causes undefined behavior.


——————————————————————————————————————————————————————————————————

//翻译的不好的地方请多多指导,可以在下面留言或者点击左上方邮件地址给我发邮件,指出我的错误以及不足,以便我修改,更好的分享给大家,谢谢。

//今后的翻译将以简洁为主,翻译其主要意思,不再每句翻译。

转载请注明出处:http://blog.csdn.net/qq844352155
author:天下无双

Email:coderguang@gmail.com

2014-9-1

于GDUT

——————————————————————————————————————————————————————————————————




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值