Bootstrap

14-6-2C++STL的list

(一)list对象的带参数构造


1.list(elem);//构造函数将n个elem拷贝给本身

#include <iostream>
#include <list>
using namespace std;
int main()
{
    list<int> lst(3,7);
    list<int>::iterator it;
    
    for(it=lst.begin();it!=lst.end() ;it++)
    {
        cout<<*it<<" ";
    }
    cout<<endl;
    return 0;
}


2. list(beg,end)://构造函数将[beg,end)区间中的元素拷贝给本身

#include <iostream>
#include <list>
using namespace std;
int main()
{
    list<int> lst;
    lst.push_back(10);
    lst.push_back(20);
    lst.push_back(30);
    lst.push_back(40);
    list<int>::iterator beg=lst.begin();
    beg++;
    list<int>::iterator end=lst.begin();
    end++;
    end++;
    end++;
    list<int> lst1(beg,end);
    list<int>::iterator it;
    for(it=lst1.begin();it!=lst1.end() ;it++)
    {
        cout<<*it<<" ";
    }
    cout<<endl;
    return 0;
}

3.list(const list&lst)://拷贝构造函数

#include <iostream>
#include <list>
using namespace std;
int main()
{
    list<int> lst;
    lst.push_back(10);
    lst.push_back(20);
    lst.push_back(30);
    lst.push_back(40);
    list<int>lst1(lst);
    list<int>::iterator it;
    for(it=lst1.begin();it!=lst1.end() ;it++)
    {
        cout<<*it<<" ";
    }
    cout<<endl;
    return 0;
}


(二)list容器的赋值

1.list.assign(beg, end);//将[beg,end)区间中的数据拷贝赋值给本身,注意该区间

是左闭右开的区间

#include <iostream>
#include <list>
using namespace std;

int main()
{
    list<int> lst, lst2;
    lst2.push_back(10);
    lst2.push_back(20);
    lst2.push_back(30);
    lst2.push_back(40);
    list<int>::iterator it = lst2.end();
    it--;
    lst.assign(lst2.begin(), it);
    for (list<int>::iterator it = lst.begin(); it != lst.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;

    return 0;
}

2.list.assign(n,elem);//将n个elem拷贝赋值给本身

#include <iostream>
#include <list>
using namespace std;

int main()
{
    list<int> lst;
    lst.assign(5,7); 
    for (list<int>::iterator it = lst.begin(); it != lst.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;

    return 0;
}

3.list.swap(lst);//将Ist与本身的元素互换

#include <iostream>
#include <list>
using namespace std;

int main()
{
    list<int> lst,lst1;
    lst1.push_back(10);
    lst1.push_back(20);
    lst.assign(5,7); 
    lst.swap(lst1);
    for (list<int>::iterator it = lst.begin(); it != lst.end(); it++)
    {
        cout <<"lis="<<*it << " ";
    }
    cout << endl;
    for (list<int>::iterator it = lst1.begin(); it != lst1.end(); it++)
    {
        cout <<"lis1="<<*it << " ";
    }
    cout << endl;

    return 0;
}


(三)list容器的大小

1.list.size();//返回容器中元素的个数

#include <iostream>
#include <list>
using namespace std;

int main()
{
    list<int> lst1;
    lst1.push_back(10);
    lst1.push_back(20);
    lst1.push_back(30);
    lst1.push_back(40);
    cout<<"lst1的长度"<<lst1.size()<<endl;

    return 0;
}

2.list.empty();//判断容器是否为空

#include <iostream>
#include <list>
using namespace std;

int main()
{
    list<int> lst1;
    lst1.push_back(10);
    lst1.push_back(20);
    lst1.push_back(30);
    lst1.push_back(40);
    cout<<"empty?="<<lst1.empty()<<endl;

    return 0;
}

3.list.resize(num);//重新指定容器的长度为num,若容器变长,则以默认值填充新位置;如果容器变短,则末尾超出容器长度的元素被删除;

list.resize(num, elem);//重新指定容器的长度为num,若容器变长,则以elem值填充新位置;如果容器变短,则末尾超出容器长度的元素被册除

#include <iostream>
#include <list>
using namespace std;

int main()
{
    list<int> lst1;
    lst1.push_back(10);
    lst1.push_back(20);
    lst1.push_back(30);
    lst1.push_back(40);
    lst1.resize(lst1.size() +3);
    list <int>::iterator it;
    for(it=lst1.begin() ;it!=lst1.end();it++)
    {
        cout<<*it<<" ";
    }
    cout<<endl;
    return 0;
}

#include <iostream>
#include <list>
using namespace std;

int main()
{
    list<int> lst1;
    lst1.push_back(10);
    lst1.push_back(20);
    lst1.push_back(30);
    lst1.push_back(40);
    lst1.resize(lst1.size() +3,70);
    list <int>::iterator it;
    for(it=lst1.begin() ;it!=lst1.end();it++)
    {
        cout<<*it<<" ";
    }
    cout<<endl;
    return 0;
}

#include <iostream>
#include <list>
using namespace std;

int main()
{
    list<int> lst1;
    lst1.push_back(10);
    lst1.push_back(20);
    lst1.push_back(30);
    lst1.push_back(40);
    lst1.resize(3);
    list <int>::iterator it;
    for(it=lst1.begin() ;it!=lst1.end();it++)
    {
        cout<<*it<<" ";
    }
    cout<<endl;
    return 0;
}

;