STLdeque的方法assign(3)


STLdeque的方法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

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



发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注