看到一本STL的基础书上有
1  deque<elementType>deq(begin,end);  怎么用这个函数
2  deq.assign(n,elem) 什么时候用这个函数,这个函数用完后会有什么后果
3 deq.assign(beg,end) 怎么用这个函数

解决方案 »

  1.   

    写个例子#include "stdafx.h"
    #include<iostream>
    #include <vector>
    #include <deque>using namespace std;int main()
    {
    int ar[] = {1, 2, 3, 4 ,5, 6};
    vector<int> vec(&ar[0], &ar[5]);

    deque<int> deq(vec.begin(), vec.end());
    copy(deq.begin(), deq.end(), ostream_iterator<int>(cout, " "));
    cout <<endl; deq.assign(5, 1);
    copy(deq.begin(), deq.end(), ostream_iterator<int>(cout, " "));
    cout << endl; deq.assign(vec.begin(), vec.end());
    copy(deq.begin(), deq.end(), ostream_iterator<int>(cout, " "));
    cout << endl; system("pause"); return 0;
    }
      

  2.   

    你这几个方法所有的序列容器都有的。
    1.构造函数,用某一Iterator区间的元素来初始化
    2.Assign 相当于 赋值( = ),deq.assign(n,elem) 就是用n个elem填入容器中。
    3.deq.assign(beg,end) 就是将ben和end区间内的数据填入容器中。assign 相对于 = 的优点是, = 只能用于同种容器,并且赋值时会考贝容器内的所有元素,
    assign可以重载更多可能性。
      

  3.   

    那就是说我先用 push_back赋直,再用assign的时候就会把原来的值覆盖掉,会不会导致内存泄漏。