STL中 list 的用法总结

/**************************   list容器的初始化方法 ******************************/
    //list<int> myList;               创建空链表               
    //list<int> myList(5);           创建5个元素的list,每个元素的值由默认构造函数构成
    //list<int> myList(5,2);         创建5个元素的list,每个元素的初始值为2
    //list<int> myList1(myList);      通过已有链表构造新链表(拷贝构造)

    int arr[10] = {1,2,3,4,5};
    list<int> myList(arr,arr+5);      //由[start, end)区间内的值初始化 
    list<int> myList2(myList.begin(),myList.end()); //由迭代器创建list,迭代区间为[begin,end]


/**************************    list容器的大小   ******************************************/

    // 1. int size() const:                    返回容器元素个数
    int size = myList.size();

    // 2. bool empty() const:                  判断容器是否为空,若为空则返回true
    bool bEmpty = myList.empty();

    // 3. size_type max_size() const noexcept; 返回该容器可以容纳元素个数的大小.
     unsigned int max_size = myList.max_size();


/**************************    list容器元素的插入   ******************************************/
    // 1. void push_back(const T& x):    list元素尾部增加一个元素x
    myList.push_back(6);

    // 2. void push_front(const T& x):    list元素首元素前添加一个元素x
    myList.push_front(0);

    // 3. iterator insert(iterator it, const T& x ): 在迭代器指针it前插入元素x,返回x迭代器指针
    list<int>::iterator it = myList.begin();
    myList.insert(it,-1);

    // 4. void insert(iterator it,size_type n,const T& x): 迭代器指针it前插入n个相同元素x
    myList.insert(it,3,-2);

    // 5. void insert(iterator it,const_iterator first,const_iterator last):    把[first,last)间的元素插入迭代器指针it
    myList.insert(it,myList2.begin(),myList2.end());


/**************************    list容器元素的删除    ******************************************/
    // 1. void pop_back():删除容器尾元素,当且仅当容器不为空
    myList.pop_back();

    // 2. void pop_front():删除容器首元素,当且仅当容器不为空
    myList.pop_front();

    // 3. void remove(const T& x):删除容器中所有元素值等于x的元素
    myList.remove(2);

    // 4. void clear():删除容器中的所有元素
    myList2.clear();

    // 5. iterator erase(iterator it):删除迭代器指针it对应的元素
    myList.erase(myList.begin());

    // 6. iterator erase(iterator first,iterator last):删除迭代器指针[first,last)间的元素
    myList.erase(myList.begin(),myList.end());

/****************************  list容器的操作  *******************************************/
    int arr1[10] = {6,7,8,9,10};
    list<int> youList(arr1,arr1+5);            //由[start, end)区间内的值初始化 

    //1.  c1.swap(c2);                        将c1和c2交换。
    myList.swap(youList);

    //2.  c1.merge(c2)                        合并2个有序的链表并使之有序,从新放到c1里,释放c2
    myList.merge(youList);
    //3.  c1.merge(c2,comp)                    合并2个有序的链表并使之按照自定义规则排序之后从新放到c1中,释放c2。

    //4.  splice(c1.beg,c2,c2.beg)            将c2的beg位置的元素连接到c1的beg位置,并且在c2中施放掉beg位置的元素

    //5.  unique()                            删除相邻的相同元素(去掉连续的重复值)
    myList.unique();

    //6.  sort()                            将链表排序,默认升序
    myList.sort();
/****************************  list容器的遍历  *******************************************/
    
    /**********  正向遍历  **********/
    //iterator begin():                返回首元素的迭代器指针
    //iterator end():                返回尾元素之后位置的迭代器指针
    for(list<int>::iterator it =myList.begin();it!=myList.end();++it) 
    {
        cout<<*it<<"-->";
    }
    cout<<"over"<<endl;

    /**********  逆向遍历  **********/
    //reverse_iterator rbegin():    返回尾元素的逆向迭代器指针,用于逆向遍历容器
    //reverse_iterator rend():        返回首元素前一个位置的迭代器指针
    for(list<int>::reverse_iterator it =myList.rbegin();it!=myList.rend();++it)
    {
        cout<<*it<<"-->";
    }
    cout<<"over"<<endl;

    /**********************************/
    //reference front():            返回首元素的引用
    //reference back():                返回尾元素的引用

    int& i = myList.front();
    int& j = myList.back();
    i = 20;
    j = 30;

    for(list<int>::iterator it =myList.begin();it!=myList.end();++it) 
    {
        cout<<*it<<"-->";
    }
    cout<<"over"<<endl;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C++的STL(Standard Template Library),`list`是一个双向链表(doubly linked list)的容器类。它提供了一组用于操作链表的方法和算法。 要使用`list`,需要包含头文件`<list>`,然后使用`std::list`来定义一个链表对象。例如: ```cpp #include <list> std::list<int> myList; // 定义一个存储整数的链表 ``` `list`类提供了一系列的方法,可以在链表进行插入、删除、访问等操作。下面是一些常用的方法示例: - `push_back(value)`: 在链表末尾插入一个元素。 - `push_front(value)`: 在链表头部插入一个元素。 - `pop_back()`: 删除链表末尾的元素。 - `pop_front()`: 删除链表头部的元素。 - `front()`: 返回链表头部的元素。 - `back()`: 返回链表末尾的元素。 - `insert(iterator, value)`: 在指定位置插入一个元素。 - `erase(iterator)`: 删除指定位置的元素。 除了上述方法之外,`list`还提供了其他一些方法和迭代器,可以方便地遍历、查找、排序等操作。 以下是一个示例代码,展示了如何使用`list`进行插入、删除和遍历操作: ```cpp #include <iostream> #include <list> int main() { std::list<int> myList; myList.push_back(1); myList.push_back(2); myList.push_back(3); std::cout << "List elements: "; for (auto it = myList.begin(); it != myList.end(); ++it) { std::cout << *it << " "; } std::cout << std::endl; myList.pop_front(); std::cout << "List elements after pop_front(): "; for (auto it = myList.begin(); it != myList.end(); ++it) { std::cout << *it << " "; } std::cout << std::endl; return 0; } ``` 这是`list`的基本用法,你可以根据需要选择适合的方法来操作链表。希望能帮到你!如果还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值