前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >c++STL容器之list容器

c++STL容器之list容器

作者头像
西西嘛呦
发布2020-08-26 22:46:19
3510
发布2020-08-26 22:46:19
举报
文章被收录于专栏:数据分析与挖掘

链表:将数据进行链式存储。物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接进行实现的。

STL中的链表是一个双向循环链表。

一、构造函数

代码语言:javascript
复制
list<T> lst;
list(bag,end);
list(n,elem);
list(const list &list);

二、list的赋值和交换

代码语言:javascript
复制
assign(beg,end);
assign(n,ele);
list& operator=(const list &list);
swap(list);
代码语言:javascript
复制
#include<iostream>
#include<list>
#include<algorithm>
using namespace std;
//加入const限制只读,并使用const_iterator
void printList(const list<int>&d) {
    for (list<int>::const_iterator it = d.begin(); it != d.end(); it++) {
        cout << *it <<" ";
    }
    cout << endl;
}

void test() {
    list<int> lst1;
    for (int i = 0; i < 10; i++) {
        lst1.push_back(i);
    }    
    list<int> lst2;
    list<int> lst3;
    lst3.assign(lst1.begin(), lst1.end());
    list<int> lst4;
    lst4.assign(3, 4);
    cout << "交换前:" << endl;
    printList(lst1);
    printList(lst4);
    cout << "交换后:" << endl;
    lst1.swap(lst4);
    printList(lst1);
    printList(lst4);

}
int main() {
    test();
    system("pause");
    return 0;
}

三、大小操作

代码语言:javascript
复制
empty();
size();
resize(ele);
resize(num,ele);

四、插入和删除

代码语言:javascript
复制
push_back(ele)//尾部插入元素
pop_back()//尾部删除元素
push_front(ele)//头部插入元素
pop_front()//头部删除元素
//注意pos、start、end参数是一个迭代器
insert(pos,ele)//向指定的索引位置插入元素,返回新数据的位置
insert(pos,n,ele)//向指定的索引位置插入n个元素,无返回值
insert(pos,beg,end)//在pos位置插入区间为[beg,end]之间的元素,无返回值
clear()//移除所有数据
erase(pos)//删除指定索引的元素
erase(start,end)//删除start到end之间的元素
remove(ele);//删除指定的元素

五、数据存取

代码语言:javascript
复制
front();
back();

六、反转后排序

代码语言:javascript
复制
#include<iostream>
#include<list>
#include<algorithm>
using namespace std;
//加入const限制只读,并使用const_iterator
void printList(const list<int>&d) {
    for (list<int>::const_iterator it = d.begin(); it != d.end(); it++) {
        cout << *it <<" ";
    }
    cout << endl;
}

bool myCompare(int val1, int val2) {
    return val1 > val2;
}

void test() {
    list<int> lst1;
    lst1.push_back(4);
    lst1.push_back(2);
    lst1.push_back(1);
    lst1.push_back(3);
    //反转
    lst1.reverse();
    //所有不支持随机访问的迭代器的容量,是不支持sort排序
    //sort(lst1.begin(), lst1.end());不合法
    //内部会提供相应的算法
    lst1.sort();//默认从大至小
    printList(lst1);
    //要想降序排序,自己定义规则
    lst1.sort(myCompare);
    printList(lst1);
}
int main() {
    test();
    system("pause");
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档