...
..
.deque<int>dq(10);

deque<int>::iterator siter=dq.begin();
deque<int>::iterator eiter=dq.end();
while(siter!=dq.end())
{
    cout<<*siter<<endl;
    siter++;
}list<int>ilist(dq.begin(),dq.end())...这里不能这样进行初始化。是不是用迭代器初始化,一定要被初始化的与要初始化的容器类型一致?

解决方案 »

  1.   

    还有,我用
    list的迭代器去初始化vector,没有问题vector的迭代器初始化list,就有同样的问题
      

  2.   

    可以这么初始化,
    vector<int> x(10);
    list<int> y( x.begin() , x.end() );
    完全没问题,应该是你用的stl版本的问题。
      

  3.   

    //..vector初始化list
    void veclist();
    //..vector初始化deque
    void vecdeque();void veclist()
    {
    vector<int>v1;
    v1.push_back(900);
    v1.push_back(901);
    v1.push_back(902);
    list<int>l1(v1.begin(),v1.end()); list<int>::iterator iter=l1.begin(); while(iter!=l1.end())
    {
    cout<<*iter<<endl;
    iter++;
    }
    }void vecdeque()
    {
    vector<int>v1;
    v1.push_back(900);
    v1.push_back(901);
    v1.push_back(902); deque<int>dq(v1.begin(),v1.end());
    deque<int>::iterator iter=dq.begin();
    while(iter!=dq.end())
    {
    cout<<*iter<<endl;
    iter++;
    }}
    void main()
    {
    //vecinit();ok
    //listinit();ok
    //dequeinit();ok
    //veclist();ok
    //vecdeque();error return;
    }