使用迭代器访问容器中的数据

迭代器:指针

begin();//数组首地址
end();//数组首地址+元素数量:注意该位置没有元素,不能解引用
std::sort(arr.begin(),arr,end());//对所有字符排序
std::sort(arr.begin()+4,arr.begin()+8);//对子字符串“next"排序
//迭代器(iterator)std::string //随机访问迭代器
std::list//双向迭代器

list的简单使用 内部是双向链表

#include<cstdio> //pritf
#include<list>//std::list list容器为双向迭代器
#include<iterator>//std::advance
#include<utility>//std::pair std::Make_pair
#include<string>//std::stringint main()
{std::list<std::pair<int, std::string> > c;//右边的尖括号用空格隔开 //声明容器用来存放int和string组成的pair类型数组//first 学号 second 姓名c.push_back(std::make_pair(180304, "我自己"));c.push_back(std::make_pair(180302, "小浣熊"));c.push_back(std::make_pair(180301, "牛胖子"));//list也允许在前面添加元素c.push_front(std::make_pair(111, "oldn"));//删除容器最后一个元素c.pop_back();//删除容器第一个元素c.pop_front();//修改第二个元素//调用c的成员函数begin获取初始位置迭代器,再使用it保存起来,std::list<std::pair<int, std::string> >::iterator it = c.begin();//然后调用std::dvance函数,让迭代器it前进一位,这样it才会指向第二个元素std::advance(it, 1);//对it解引用 把第二个元素用空条徐伦覆盖*it = std::make_pair(180301, "空条徐伦");//用循环迭代器输出给一个元素for (it = c.begin(); it != c.end(); ++it){printf("学号:%d 姓名:%s\n",it->first,it->second.c_str());}system("pause");return 0;
}

栈:只有一个入口和一个出口,而且入口和出口都是同一个,数据先进后出(FILO)

std::stack 保存栈的容器

#include<iostream>
#include<stack>
using namespace std;int main()
{//用std创建出容器对象s,对象s用来保存字符std::stack<char> s;s.push('A');//存放元素Astd::cout<<s.top();//输出栈顶s.pop();//删除栈顶s.push('B');s.push('C');s.push('D');std::cout << s.top();s.pop();std::cout << s.top();s.pop();s.push('E');std::cout << s.top();s.pop();std::cout << s.top()<<endl;s.pop();system("pause");return 0;
}

std::stack 类表示为底层容器的包装器——只提供特定的函数集合。

std::stack默认的底层容器:std::deque

用尖括号里的第二个模板参数指定容器的类型

而且第二个容器中的参数模板类型必须与第一个模板参数类型一致,否则就会导致未定义行为!

C++ 小古银笔记补基础相关推荐

  1. 林克的小本本之——记一些基础的linux命令

    查看shell cat /etc/shells 查看系统支持的shell echo $SHELL 查看目前正在使用的shell 快捷键 Ctrl+a 跳到行首 Ctrl+e 跳到行尾 Ctrl+u 删 ...

  2. VS2017学习C++基础十一(项目实战:小公主养成记)

    // chapter11a01.cpp : //项目实战:小公主养成记#include <iostream> #include <string> #include <ve ...

  3. 小林求职记(四)不会吧不会吧,面试还真会问这些呀

    小林求职记系列文章,归置到公众号菜单栏,欢迎查看历史篇 前传 小林求职记(三)一上来就围绕电商系统层层提问,我太难了.... 经历了好几次求职失败的经历,小林最终找到了自己以前一起工作合作的老同事王哥 ...

  4. 小林求职记(三)一上来就围绕电商系统层层提问,我太难了....

    前传 面试官:什么是大事务?小林哥:就是 很大...的...事务?? 小林求职记(二):说好的问基础,为啥我感觉一点也不基础呢? 二面的面试官来到来我的跟前,开始对我的简历进行了一番打量然后就开始了技 ...

  5. 狠补基础-数学+算法角度讲解卷积层,激活函数,池化层,Dropout层,BN层,全链接层

    狠补基础-数学+算法角度讲解卷积层,激活函数,池化层,Dropout层,BN层,全链接层 在这篇文章中您将会从数学和算法两个角度去重新温习一下卷积层,激活函数,池化层,Dropout层,BN层,全链接 ...

  6. 小P寻宝记——好基友一起走 背包

    小P寻宝记--好基友一起走 题目描述 话说,上次小P到伊利哇呀国旅行得到了一批宝藏.他是相当开心啊,回来就告诉了他的好基友小鑫,于是他们又结伴去伊利哇呀国寻宝. 这次小P的寻宝之路可没有那么的轻松,他 ...

  7. python3转为unicode编码_「小技能get记」· 如何用python3解码unicode

    注:#小技能get记#,主要是为了记录日常生活.工作.学习中,get到的一些小小技能,希望可以帮助自己巩固知识,如果正好也能帮助需要的你,那就更好啦! 小小进步,天天get-- 1.故事背景 热爱学习 ...

  8. jQuery小测试系列之jQuery基础知识

    日期:2012-4-17  来源:GBin1.com 这是jQuery小测试系列第一部分:基础知识. 来源:jQuery小测试系列之jQuery基础知识

  9. D - 小Y上学记——要迟到了!

    D - 小Y上学记--要迟到了! Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) ...

最新文章

  1. 学习 Ruby on Rails 真的很爽!
  2. 如何发表高水平论文(转载)
  3. 牛逼! IDEA 2020 要本土化,真的是全中文了!
  4. .net生成随机字符串
  5. jvm 性能_JVM性能魔术
  6. undolog 是binlog_mysql日志redo log、undo log、binlog以及作用看这篇就可以啦
  7. 递增三元组蓝桥杯c语言,蓝桥-递增三元组-蓝桥
  8. [转载] python 字符串转换long_python整数、字符串、字节串相互转换
  9. 开心消消乐游戏网页设计作品 学生dreamweaver作业静态HTML网页设计模板 游戏主题网页作业制作
  10. 2021年国内四大 IoT 物联网平台选型对比综合评估报告
  11. 【语义分割】--SegNet理解
  12. youtube下载助手 firefox插件
  13. 解决elementui中多层弹窗el-dialog遮挡现象
  14. 2021年B站品牌爆款营销案例盘点
  15. 数据表底层的B+树的叶子结点为啥用类似双链表连接起来
  16. ue4 中动画控制,利用conduit节点
  17. Android8.0未知来源应用安装权限
  18. IAR编译出现Error[Pe147]: declaration is incompatible with “__interwork __vfp int dir_get_dout()“ 报错
  19. D2FQ: Device-Direct Fair Queueing for NVMe SSDs
  20. 线性代数(七)二次型——正交变换法化二次型为标准形

热门文章

  1. 看门狗2服务器连接中断,看门狗2无法连接服务器 | 手游网游页游攻略大全
  2. 抖音最新卡直播广场超快上人技术,反复测试总结最终方法
  3. 十分欠揍的小学生作文
  4. 【iOS-iap防护】验证用户付费收据!拒绝iap Cracker!拒绝iap Free!让iphone越狱用户无从下手!
  5. Python在抖音上也这么火?
  6. 计算机基础win7桌面操作,计算机基础1实验报告win7基本操作.doc
  7. iOS 类似虾米音乐侧滑动画解析(1)
  8. binwalk 的安装和使用
  9. 物联网下的工控机防病毒安全分析
  10. js中通过split函数分割字符串成数组