当前位置: 首页 > news >正文

注册企业注册公司重庆网站优化公司

注册企业注册公司,重庆网站优化公司,免费会员管理软件,淄博阿雷网站建设目录 1, 什么是list 2, 创建 2-1, 标准数据类型 2-2, 自定义数据类型 2-3, 其他创建方式 3, 操作list 3-1, 赋值 3-2, 添加元素 3-2-1, 添加元素(assign) 3-2-…

目录

1, 什么是list

2, 创建

2-1, 标准数据类型

2-2, 自定义数据类型

2-3, 其他创建方式

3, 操作list

3-1, 赋值

3-2, 添加元素

3-2-1, 添加元素(assign)

3-2-1-1, 标准数据类型

3-2-1-2, 自定义数据类型

3-2-2, 添加元素(insert)

3-2-2-1, 标准数据类型

3-2-2-2, 自定义数据类型

3-2-3, 添加元素(push_back | push_front)

3-2-3-1, 标准数据类型

3-2-3-2, 自定义数据类型

3-3, 查询

3-3-1, 标准数据类型

3-3-2, 自定义数据类型

3-4, 获取长度(size)

3-5, 设置长度(resize)

3-6, 判断是否为空(empty)

3-7, 删除元素

3-7-1, 头删(pop_front)

3-7-2, 尾删(pop_back)

3-7-3, 指定元素删除(erase)

3-8, 清空(clear)

3-9, 排序(sort)

3-10, 交换元素(swap)

3-11, 翻转


1, 什么是list

C++中的一种容器类型, 也叫链表, 数据是链式存储的, 物理上不是一段连续的存储空间, 逻辑上通过链表指针来数据连接

list由节点组成, 节点由存储数据的数据域和存储地址的指针域组成

其迭代器不支持随机访问, 只能前移或后移

因为不是标准数据类型, 需要包含头文件才能使用#include <list>

2, 创建

通过list<数据类型> 对象名, 可创建list, 数据类型可以是标准数据类型, 也可以是自定义类型

2-1, 标准数据类型

//list中的元素类型为string
list<string> l1;

2-2, 自定义数据类型

Myclass m1("aaa", 1);
//list容器中的数据类型为Myclass
list<Myclass> l1;

2-3, 其他创建方式

//通过拷贝构造创建
list<Myclass> l2(l1);
//通过迭代器区间方式创建
list<Myclass> l3(l1.begin(), l1.end());
//list容器中的元素为5个m1
list<Myclass> l4(5, m1);

3, 操作list

3-1, 赋值

 通过list<数据类型> 对象名2 = 对象名1, 进行赋值

list<Myclass> l1;
list<Myclass> l2 = l1;

3-2, 添加元素

3-2-1, 添加元素(assign)

assign是用新的元素替换原来list的元素

3-2-1-1, 标准数据类型
//l1中分配5个字符串对象aaa
l1.assign(5, "aaa");
//l1中用3个字符串bbb, 替换上面的5个aaa
l1.assign(3, "bbb");
3-2-1-2, 自定义数据类型
Myclass m1("aaa", 1);
Myclass m2("bbb", 2);
list<Myclass> l1;
//l1中的元素为5个m1对象
l1.assign(5, m1);
//l1的元素被替换为5个m2对象替换
l1.assign(5, m2);

3-2-2, 添加元素(insert)

insert是向list指定位置, 添加元素, 支持一次添加多个元素

3-2-2-1, 标准数据类型
//在l1.begin()迭代器指向位置, 插入元素aaa
l1.insert(l1.begin(), "aaa");
//在l1.begin()迭代器指向位置, 插入3个字符串bbb
l1.insert(l1.begin(), 3, "bbb");
//在l1.begin()迭代器指向位置, 插入区间:l1.begin(), l1.end()指向的元素
l1.insert(l1.begin(), l1.begin(), l1.end());
3-2-2-2, 自定义数据类型
Myclass m1("aaa", 1);
Myclass m2("bbb", 2);
list<Myclass> l1;
//在l1.begin()迭代器指向位置, 插入元素m1
l1.insert(l1.begin(), m1);
//在l1.begin()迭代器指向位置, 插入3个m2
l1.insert(l1.begin(), 3, m2);
//在l1.begin()迭代器指向位置, 插入区间:l1.begin(), l1.end()指向的元素
l1.insert(l1.begin(), l1.begin(), l1.end());

3-2-3, 添加元素(push_back | push_front)

push_back是在尾部插入元素, push_front是在头部插入元素, 两者都只能单个添加

3-2-3-1, 标准数据类型
//在头部插入字符串元素bbb
l1.push_front("bbb");
//在尾部插入字符串元素aaa
l1.push_back("aaa");
3-2-3-2, 自定义数据类型
Myclass m1("aaa", 1);
Myclass m2("bbb", 2);
list<Myclass> l1;
//在头部插入元素m1
l1.push_front(m1);
//在尾部插入元素m1
l1.push_back(m2);

3-3, 查询

由于list的数据不在连续内存空间上, 所以不支持索引访问

通过对象名.front()获取元素, 对象名.back(),  获取元素, 通过迭代器, 获取指定元素

3-3-1, 标准数据类型

//获取首元素
cout << l1.front() << endl;
//获取尾元素
cout << l1.back() << endl;
//通过迭代器获取元素
list<string>::iterator it = l1.begin();
it++;
it++;
cout << *it << endl;

3-3-2, 自定义数据类型

Myclass m1("aaa", 1);
Myclass m2("bbb", 2);
list<Myclass> l1;
//在头部插入字符串元素bbb
l1.push_front(m1);
//在尾部插入字符串元素aaa
l1.push_back(m2);
//获取首元素
cout << l1.front().m_name << " " << l1.front().m_age << endl;
//获取尾元素
cout << l1.back().m_name << " " << l1.back().m_age << endl;
//通过迭代器获取
list<Myclass>::iterator it = l1.begin();
it++;
cout << it->m_name << " " << it->m_age << endl;

3-4, 获取长度(size)

通过对象名.size(), 获取list的长度

cout << l1.size() << endl;

3-5, 设置长度(resize)

通过对象名.resize(), 设置list的长度

//设置list的长度为5
l1.resize(5);
//设置list的长度为10, 多余为用m1填充
l1.resize(10, m1);

3-6, 判断是否为空(empty)

通过对象名.empty(), 判断list是否为空, 为空返回1, 不为空返回0;

cout << l1.empty() << endl;

3-7, 删除元素

3-7-1, 头删(pop_front)

通过对象名.pop_front(), 删除list的头部元素

//删除deque中的首元素
l1.pop_front();

3-7-2, 尾删(pop_back)

通过对象名.pop_back(), 删除list的尾部元素

//删除deque中的尾元素
l1.pop_back();

3-7-3, 指定元素删除(erase)

通过对象名.erase(迭代器名称), 删除迭代器指向的元素

//删除指定的元素
l1.erase(d.begin());
list<Myclass>::iterator it;
it++;
l1.erase(it);

3-8, 清空(clear)

通过对象名.clear(), 删除迭代器指向的元素

//通过迭代器指定区间进行清空
l1.erase(l1.begin(), l1.end());
//清空元素
l1.clear()

3-9, 排序(sort)

list<string> l1;
l1.push_back("ddd");
l1.push_back("aaa");
l1.push_back("ccc");
l1.push_back("bbb");
l1.sort();

3-10, 交换元素(swap)

通过对象名1.swap(对象名2), 可交换两个list中的元素, 元素类型需要一致

l1.swap(l2);

3-11, 翻转

通过对象名.reverse(), 可翻转list中的元素

l1.reverse();

http://www.mmbaike.com/news/84485.html

相关文章:

  • 怎么做自适应的网站外贸网站优化
  • 聊城做网站的公司资讯重庆seo报价
  • 动态网站制作好了在哪里看简单网页制作模板
  • 农业推广调查报告连云港seo优化
  • 如何做wap网站代写1000字多少钱
  • 网站建设的七大优缺点百度关键词排名优化
  • 超便宜的网站万网域名查询
  • 金坛网站建设网站改版seo建议
  • 网站定制报价建网站找哪个公司
  • 租整套房做民宿的网站google下载安卓版下载
  • 淮南招聘网站建设精准推广引流5000客源
  • 网站各个级别建设费用企业营销策划有限公司
  • 专业上海网站建设怎么给公司做网站
  • 企业网站建站意义石嘴山网站seo
  • 个人主页网站申请批量查询指数
  • 中国建设银行建银购网站深圳搜索引擎优化收费
  • 做公司网站有什么需要注意的营销型网站开发公司
  • 工作一般做网站视频的工作叫做什么今天国内最新消息
  • 网上卖货哪个平台比较好武汉seo招聘信息
  • 广西网站建设网站seo策划
  • 宏升温岭网站建设今日新闻快讯10条
  • 电商网站建设源码友の 连接
  • 网站展示 包括什么建一个网站大概需要多少钱
  • 网站建设的主要流程百度广告投诉电话
  • 商标局网站可以做变更吗站长工具查询网站
  • 自己做网站推广产品快速优化工具
  • 个人网站做短视频关键词搜索量查询工具
  • 公司官网制作报价五种关键词优化工具
  • 网上做外贸都有哪些网站网页制作培训教程
  • 昆山高端网站建设机构长春网站制作企业