找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2589|回复: 12

C++学习(容器)

 火.. [复制链接]
  • 打卡等级:即来则安
  • 打卡总天数:29
  • 打卡月天数:1
  • 打卡总奖励:7791
  • 最近打卡:2025-12-13 17:25:16

2540

主题

1355

回帖

2万

积分

管理员

积分
21304
发表于 2021-2-27 22:55:13 | 显示全部楼层 |阅读模式
容器:能够操作多种数据结构和算法的模板类和函数库。能够像现实中的容器一样存放各种类型的对象,一个容器中的所有对象必须是同一个类型的。
容器类型:
  • vector(向量)、list(列表)、deque(双队列)、set(集合)、map(映射)、multiset(多重集合)、stack(栈)、queue(队列)、priority_queue(优先队列)、multimap(多重映射)
vector容器(顺序容器)
通过元素在容器中的位置顺序存储和访问元素的
vector<T> v1; //vector是保存类型为T的对象,默认构造函数v1为空
vector<T> v2(v1); //v2是v1的一个副本
vector<T> v3(n, i) //v3包含n个值为i的元素
vector<T> v4(n); //v4含有值初始化的元素的n个副本
vector<int> example(5,1); //5个1
vector<string> s1(10,"apple"); //10个apple
常用操作:
v.empty()//判断v是否为空串 空则返回true 否则为false
s.size()//返回v中字符的个数
v.push_back(a)//在v的末尾添加一个值为a的元素
v[n]//返回v中位置为n的字符
只能通过push_back()在vector<T>对象的最后添加元素
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
迭代器
使用迭代器可以访问容器中的元素
可以把指针看成一种特殊的迭代器
vector<int>::iterator point;
  • 1
容器中begain操作返回的迭代器指向第一个元素
end返回的迭代器指向最后一个元素的下一个位置,称为超出末端迭代器。
vector<int> example(10.1);
for(vector<int>::iterator iter=example.begin();iter!=example.end();++iter)
*iter=0; //将所有的元素都重置为0
迭代器也支持算术操作
  • 1
  • 2
  • 3
  • 4
关联容器类型(pair和map)
关联容器通过键(key)来存储和访问元素的
pair容器:
包含两个数据值
pair<int,string>example(11,"china");//两个类型名可以不同
pair<string,string>s1("yaoming","china");
string one,two;
one=s1.first;//string对象one中为yaoming
two=s1.second;//two中为china
make_pair:
pair<sring,string> player;
string one,two;
while(cin>>one>>two)
player=make_pair(one,two); //player中的一个元素为one中的字符串,two为第二个输入的字符串
//或者 cin>>player.first>>player.second
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
map容器:
提供一对一的数据处理能力
map<键值类型,关联值类型>m; //创建一个空的map对象
标准I/O库类型
iostream:定义读写控制窗口的输入输出类型
fstream:定义读写文件的输入输出类型
sstream:定义读写string对象的输入输出类型
iostream:
cin>>输入,默认设备为键盘
cout<<输出
cerr输出程序错误消息,默认输出设备为屏幕


工控课堂 www.gkket.com

0

主题

133

回帖

387

积分

注册会员

积分
387
发表于 2021-2-28 08:38:33 | 显示全部楼层
无私奉献,好工控人,32个赞送给你!!
工控课堂 www.gkket.com

0

主题

92

回帖

229

积分

注册会员

积分
229
发表于 2021-3-2 04:07:45 | 显示全部楼层
看完楼主的帖子,我的心情竟是久久不能平息,受教了
工控课堂 www.gkket.com

0

主题

80

回帖

121

积分

新手上路

积分
121
发表于 2025-11-16 00:47:59 | 显示全部楼层
谁懂啊!这内容我能循环看十遍
工控课堂 www.gkket.com

1

主题

398

回帖

2167

积分

高级会员

积分
2167
发表于 2025-11-16 00:55:43 | 显示全部楼层
不请自来,就想夸一句:太顶了!
工控课堂 www.gkket.com

0

主题

99

回帖

151

积分

新手上路

积分
151
发表于 2025-11-16 01:02:01 | 显示全部楼层
被戳中笑点 / 泪点,太真实了!
工控课堂 www.gkket.com

0

主题

78

回帖

124

积分

新手上路

积分
124
发表于 2025-11-16 01:03:14 | 显示全部楼层
同款经历!我当初也这么过来的😂
工控课堂 www.gkket.com

0

主题

92

回帖

140

积分

新手上路

积分
140
发表于 2025-11-16 01:04:55 | 显示全部楼层
谁懂啊!真的被戳中笑点 / 泪点了
工控课堂 www.gkket.com

0

主题

44

回帖

54

积分

新手上路

积分
54
发表于 2025-11-16 01:08:53 | 显示全部楼层
我先占个楼,等下再慢慢看~
工控课堂 www.gkket.com

0

主题

69

回帖

108

积分

新手上路

积分
108
发表于 2025-11-16 01:09:45 | 显示全部楼层
占个楼慢慢看,先马克一下
楼主辛苦啦,期待下一篇分享
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-22 20:15 , Processed in 0.130369 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表