自学习C++以来,一直对STL、容器、迭代器、算法甚是困惑。
参考一些资料,加上自己的理解,整理如下
如果说程序等于数据结构+算法,STL就是一个小程序库,之所以说小,是因为容器模板中常用的函数有限,其中一个个容器就是一种数据结构.算法通过迭代器对容器中的数据进行访问,即形成一个个小程序。
在使用容器之前首先要根据自己使用的数据集和将要对数据结构采取的访问模式,比如增删改查,决定使用STL中的何种容器类型。
一、容器类型:

二、迭代器:
我们使用容器的时候,迭代器是一个不可分割的部分。迭代器在STL中用来将算法和容器联系起来,起着一种胶着剂的作用。迭代器是一种检查容器内元素并遍历元素的数据类型。迭代器是一种行为类似指针的对象,它提供类似指针的功能,对容器成员的内容进行访问。
注意:每个迭代器是和每一个容器绑定的。

vector <int> ::iterator iter;

三、容器模板中常用的算法:
assign() 赋值
empty() 容器为空则返回非0值
erase() 删除指定位置或指定范围内的元素
push_front() 从容器头部插入元素
push_back() 从容器尾部插入元素
pop_front() 删除第一个元素
pop_back() 删除最后一个元素
back() 返回最后一个元素的引用
front() 返回第一个元素的引用
begin() 返回指向第一个元素的游标
end() 返回指向最后一个元素后一个位置的游标
四、代码实现

#include<iostream>
#include<stdlib.h>
#include<vector>
#include<algorithm>
using namespace std;
void Output(int i){cout<<i<<"\t";
}
void main(){vector<int> ivect,ivect2,ivect3;//定义容器对象vector<int>::iterator iter;//定义迭代器ivect.push_back(10);ivect.push_back(14);ivect.push_back(1);ivect.push_back(12);ivect.push_back(7);cout<<"ivect 元素:"<<endl;for_each(ivect.begin(),ivect.end(),Output);//for_each(first,end,f)f是对从first到end每一个元素采区的操作sort(ivect.begin(),ivect.end());cout<<endl<<endl;cout<<"ivect 元素排序后:"<<endl;for_each(ivect.begin(),ivect.end(),Output);cout<<endl<<endl;cout<<"用迭代器 iterator来输出元素:"<<endl;for(iter=ivect.begin();iter!=ivect.end();++iter){cout<<*iter<<"\t";}cout<<endl<<endl;system("pause");}

运行结果:

C++中STL和容器、迭代器、算法之间的关系相关推荐

  1. storm中worker、executor、task之间的关系

    这里做一些补充: worker是一个进程,由supervisor启动,并只负责处理一个topology,所以不会同时处理多个topology. executor是一个线程,由worker启动,是运行t ...

  2. GPS 数据中的精度因子(DOP)与协方差之间的关系 (参考链接)

    GPS 数据中的精度因子(DOP)与协方差之间的关系 参考链接: [1] evenator. libnmea_navsat_driver/driver.py [EB/OL]. https://gith ...

  3. unity中单位是米还是厘米_2019-08-22Unity中的单位长度与像素之间的关系

    一:什么是像素? 像素是由很多个小方格组成,每一个小方格上都存储了位置信息和色彩信息.像素是图像的最小单位 分享一个知识点:图像分为两类,位图和矢量图 位图(点阵图):由多个像素组成,当放大时被分为多 ...

  4. Android中的APK,TASK,PROCESS,USERID之间的关系

    开发Android已经有一段时间了,今天接触到底层的东西,所以对于进程,用户的id以及Android中的Task,Apk之间的关系,要做一个研究,下面就是研究结果: apk一般占一个dalvik,一个 ...

  5. 数据结构与算法之间的关系

    今天打算学一下数据结构,于是在网上搜索相关的教程,发现很多教程的名字在数据结构后面加上了算法两个字,然后我在想,(数据结构 == 算法)?.如果不等于,那么为什么那么多的人总喜欢将数据结构和算法拿到一 ...

  6. unity中awak,start,update之间的关系(转)

    正式开始学习Unity了.当然,第一个遇到的问题就是Awake和Start的问题,之前在网上查过一下这两者的区别,简单记忆了一下,认为自己知道了两者的区别.不过实际用起来,发现对于这两者到底是什么区别 ...

  7. unity中awak,start,update之间的关系

    转载地址 正式开始学习Unity了.当然,第一个遇到的问题就是Awake和Start的问题,之前在网上查过一下这两者的区别,简单记忆了一下,认为自己知道了两者的区别.不过实际用起来,发现对于这两者到底 ...

  8. 【FFMPEG源码分析】ffmpeg中context与AVClass,AVOption之间的关系

    通过前面三篇文章的分析大致了解了ffmpeg中demuxer/decoder模块的内部大致结构和数据处理流程.在阅读源码的过程中经常会看到XXXContext,AVClass xxx_class, A ...

  9. C++中STL常用容器的优点和缺点

    我们常用到的STL容器有vector.list.deque.map.multimap.set和multiset,它们究竟有何区别,各自的优缺点是什么,为了更好的扬长避短,提高程序性能,在使用之前需要我 ...

最新文章

  1. Visual C++ 2010 简介
  2. IDEA及IDEA汉化包
  3. python流程控制语法_005 Python语法之流程控制
  4. [云炬创业基础笔记]第六章商业模式测试24
  5. 受检异常 非受检异常_这样设计 Java 异常更优雅,赶紧学
  6. nvme固态硬盘开机慢_为何我使用了固态硬盘开机速度还是需要20-30秒
  7. 数据库工作笔记011---Centos7.3下切换mysql数据库的存储位置_挂盘_目录挂载_挂载某个目录到某个设备下
  8. SQLServer数据库差异备份
  9. oracle link binaries,Oracle 单实例 Relink Binary Options 说明
  10. 如何卸载mingw_MinGW和MSYS的自动安装
  11. 一道2016年美国高中数学竞赛题
  12. 《Tableau数据可视化从入门到精通》之读取PDF文件数据
  13. 如何分析多个极兔快递物流每个网点之间是否超过12小时
  14. pandas与csv的用法笔记
  15. 简单自定义协议的封包和解包
  16. 一文让你快速了解并入手ChatGPT,并【分享】免梯子的GPT,让你体验玩 ChatGPT 的正确姿势
  17. Android 9,安卓开发项目实战
  18. springboot+校园新闻数据化系统-计算机毕设 附源码99293
  19. 2007年全国硕士研究生入学统一考试(英语一)
  20. 如果学好SQL有啥好?

热门文章

  1. boost::mpl模块BOOST_MPL_ASSERT_MSG相关的测试程序
  2. boost::mp11::mp_list相关用法的测试程序
  3. boost::math模块使用逆高斯(或逆正态)分布的示例
  4. boost::hana::detail模块实现相关算法的测试程序
  5. GDCM:gdcm::FileDerivation的测试程序
  6. boost的chrono模块运行计时器的测试程序
  7. VTK:可视化之RandomProbe
  8. VTK:InfoVis之ParallelCoordinatesView
  9. OpenCV脸部美化FaceBeautificator的实例(附完整代码)
  10. c语言词法分析程序,词法分析器(c语言实现)