c++中list容器的简要使用说明(1)

    list是STL中一个比较重要的容器,它有以下几个特点:

    1. list中的元素都是双向链接(一个元素与它前后的元素都有联系, 有点像双向链表);

    2. list中的元素不能随机访问(无法像访问数组中的元素那样直接任意访问某一个元素);

    3. list的内存可以被动态添加(增加一个元素分配一段内存)。


在使用list时, 你需要加载list库(c++中:#include <list>         c中:#include <list.h>);


一. list的构造函数:

    
     1. list<int> list_1;        //无参构造函数,list的初始大小为0
     2. list<int> list_2(3);      //定义一个大小为3的list,list中的值默认为0
     3. list<int> list_3(5, 1);       //定义一个含有5个元素的, 并且元素的值都为的1的list
     4. list<int> list_4(list_3);     //建立一个与list_3一样的list
     5. list<int> list_5(list_2.begin(), list_2.end());     //建立一个与list_2含有相同元素的list


list中常使用的函数:


1.  函数push_front(type i)

    功能:在调用list的头部添加元素i

2. 函数名:push_back(type i);

   功能:在调用list的尾部添加元素i

3.函数名:pop_back();

   功能:删除调用list的尾部的元素

4.函数名:pop_front();

  功能:删除调用list的头部的元素

5.函数名:remove(type value);

   功能:删除调用list中值为value的元素

6.函数名:remove_if(predicate pre);

  功能:删除调用list中符合条件的元素

7.函数名:erase(iterator pos);

   功能:删除调用list中位置为pos的元素

8.函数名:sort();

   功能:对调用list进行升序排序

9.函数名:sort(greater<type>());

   功能:对调用list进行降序排列

10.函数名:max_size();

     功能:返回调用list的最大可能大小

11.函数名:size();

     功能:返回调用list的实际大小

12. 函数名:clear();

     功能:清空调用list中的元素

13.函数名:empty();

    功能判断调用list是否为空,空为true,否则为false

14.函数名:resize(int i);

    功能:给调用list重新分配大小为i的空间,保留调用list原有的元素如果i小于调用list的大小,则调用list只保留前i个元素;如i大于调用list,则多余的为默认值(整形的默认值为0);

15.函数名:resize(int i, type value);

     功能:同上,只是默认值变为value

16.函数名:reverse();

     功能:翻转调用list中的元素(1,2,3变成3,2,1;

17.函数名:assign(int i, type value);

    功能:给调用list重新分配一段空间,空间大小为i, 空间中的元素值都为value.

18.函数名:begin();

    功能:返回调用list头部元素的引用。(返回类型为iterator)

19.函数名:end();

    功能:返回调用list尾部元素的后像指针, 即调用list尾部元素的后一个空间的引用。(返回类型为iterator)



代码:

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

list<int> list_1(10);   //建立一个长度为10的list, 初始值为0

int show_elements( )
/*显示list中的数组*/
{
    list<int>::iterator ite;
    for(ite = list_1.begin(); ite != list_1.end(); ite ++)
    {
        cout << *ite << " ";
    }
    cout << endl;
    return 0;
}

bool judge(int value)
/*判断条件*/
{
    return (value < 3);
}

int main()
{
    int max_length = list_1.max_size();      //list可能的最大长度
    cout << "The max size of list_1 is " << max_length << endl;
    int i = 0;
    cout << "The primary list : ";
    show_elements();

    list_1.assign(5,3);  //重新分配list_1, list_1含有5个元素,且默认值为3

    cout << "After assign : ";
    show_elements();

    for(i = 0; i < 5; i ++)
        list_1.push_front(i);     //在list的头部插入数据
    cout << "After push element in the front : ";
    show_elements();

    for(i = 11; i < 18; i ++)
        list_1.push_back(i);    //在list的尾部插入数据
    cout << "After push element in the back : ";
    show_elements();

    list_1.pop_back();        //删除list的尾部数据
    cout << "After pop element in the back : ";
    show_elements();

    list_1.pop_front();    //删除list头部数据
    cout << "After pop element in the front : ";
    show_elements();

    list_1.remove(3);     //删除list中值为3的元素
    cout << "After remove 3 : ";
    show_elements();

    list_1.remove_if(judge);   //删除list中符合条件的元素
    cout << "After remove the specific element(value < 3) : ";
    show_elements();

    list<int>::iterator position = list_1.begin();
    for(i = 0; i < 2; i ++)
        position ++;
    list_1.erase(position);      //删除特定位置的元素
    cout << "After erase third element : ";
    show_elements();

    list_1.sort();   //升序排列list中的元素
    cout << "After ascent sort : ";
    show_elements();

    list_1.sort(greater<int>());   //降序排列list中的元素
    cout << "After descend sort : ";
    show_elements();

    list_1.reverse();    //翻转list中的元素
    cout<<"After reverse : ";
    show_elements();

    int size = list_1.size();    //list的长度
    cout << "The size of list_1 is " << size << endl;

    list_1.resize(3);      //给list分配长度为6的空间,多余的空间赋0
    cout << "After resize : ";
    show_elements();

    list_1.resize(10, 2);    //给list分配长度为10的空间,多余的空间赋2
    cout << "After resize : ";
    show_elements();

    list_1.clear();      //清除list中的元素
    cout << "After clear : ";
    show_elements();

    if(list_1.empty())    //list是否为空
        cout << "list_1 is empty" << endl;
    else
        cout << "list_1 is not empty" << endl;
    return 0;

}


运行结果:






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值