前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >暑假(补)-3

暑假(补)-3

作者头像
AngelNH
发布2020-04-16 11:09:22
3220
发布2020-04-16 11:09:22
举报
文章被收录于专栏:AngelNIAngelNI

不疯不魔,难以成佛。

学完了vector,接下来就开始学习其他容器了。这些都是C++ STL中的比较好用的方法,让你的编程变得简单。

迭代器iterator

在这几天的使用来看,自认为迭代器是为了访问容器的元素。

代码语言:javascript
复制
初始化: < 容器类型 >< 数据类型 > :: iterator  <名称>

例如:vector<int>::iterator  iter;  //这就定义了一个可以访问vector int型数据的 名为iter的迭代器

还有如下的迭代器初始化方法:

  1. 正向迭代器:容器类型::iterator 名称
  2. 常量迭代器:容器类型::const_iterator 名称
  3. 反向迭代器:容器类型::reverse_iterator 名称
  4. 常量反向迭代器: 容器类型::const_reverse_iterator 名称

下面就以一个实例来学习迭代器的使用方法。

代码语言:javascript
复制
#include<iostream>
#include<vector>
using namespace std;
int main()
{
	int a[10]={1,2,3,4,5,6,7,8,9,0};
    vector<int> ve(a,a+10);
	vector<int>::iterator  it;
    //正向迭代器与反向迭代器
    for(it = ve.begin();it!=ve.end();++it)//听说 ++i 比 i++执行速度快
        cout<<(*ve)<<endl;
    for(it = ve.rbegin();it!=ve.rend();++it)//听说 ++i 比 i++执行速度快
        cout<<(*ve)<<endl;
	return 0;
}

还有操作迭代器的三个函数

包含于头文件< algorithm >

  1. advance(p,n) 向前移动 n 个元素
  2. distance(p,q) 计算两个迭代器的长度,在同一个容器内
  3. iter_swap(p,q) 用于交换两个迭代器p,q 指向的值

集合set

头文件< set >

其实,只要掌握了一个容器的操作方法,其他容器的方法都可以类比。

值得注意一点的是:集合内的容器不能重复,并且他会默认从小到大排序。

代码语言:javascript
复制
#include<set>
set<int> st;
st.insert()  //插入元素
st.begin() // 返回第一个元素的迭代器
st.end()  //返回最后一个元素之后的迭代器,不是最后一个迭代器
stclear()  //清空所有元素
st.count()  //判断元素是否存在,返回bool类型
st.empty()  //判断是否为空 ,空则true
st.erase()  //删除集合中元素
st.find()   //返回一个被查找到的元素的迭代器,没有则返回end(),find(开始地址,尾地址,查找元素)
st.size() //集合的大小

栈stack

头文件< stack >

代码语言:javascript
复制
//初始化
stack<int>   a;
a.push()  //  压入栈
a.pop()  //移除最顶端元素
a.top()  //访问最顶端元素
a.size()  //栈的大小
a.empty()  //判断是否为空

队列queue

头文件< queue >

代码语言:javascript
复制
queue<int > q;
q.push()  //加入对列
q.front()  //队首元素
q.pop()  //移除队首元素
q.empty()  //判断是否为空
q.size()  //队列大小

字典map

头文件< map >

代码语言:javascript
复制
map<int,int> mp;
mp.clear()  //清空mp
mp.size()  //mp大小
mp.empty() //判断是否为空
mp.count(key)  //判断key是否存在
map<int,int >::iterator it;
mp[0] =4;
mp[1] = 2;
mp[2] = 3;
it = mp.find(1)  //key,返回一个地址
(*it).first()  //返回所指地址的key值
(*it).second() //返回所指地址的value值
mp.insert(pair<int,int>(4,5))  //插入键值对
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-14|,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 迭代器iterator
  • 集合set
  • 栈stack
  • 队列queue
  • 字典map
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档