博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL笔记
阅读量:5308 次
发布时间:2019-06-14

本文共 1301 字,大约阅读时间需要 4 分钟。

STL的基本概念:

  1-容器:是可容纳各种类型的数据结构,是 类模板

  2-迭代器:是用于依次存放容器中的元素,类似指针

  3-算法: 是用于操作容器中元素的 函数模板

       sort() 用来对 vector 中的数据进行排序。

       find() 用来搜索 list 中的对象。

      算法本身与他们操作的数据类型无关,因此他们可以在从简单数组到高度复杂容器的任何数据结构上使用。

如 int  a[100]:

  该数组就是容器,而int * 类型的指针变量就可以作为迭代器,sort算法可以作用在该容器上,对其排序:

  sort(a,a+50); //对前50个元素进行排序

容器种类:

  顺序容器: vector(数组) ,deque (双向队列),list(双向链表) 

  关联容器:set ,multiset ,map ,multimap  // 都能对输入数据进行排序

  容器适配器: stack ,queue ,priority_queue

  PS:对象被插入容器中时,被插入的是对象的一个复制品

容器 容器上的迭代器访问
vector 随机访问(通过下标就能取到元素)
deque 随机访问
list 双向(不能用下标取元素)
set/multiset 双向
map/multimap 双向
   
stack 不支持迭代器(元素只能在对头或对尾被访问)
queue 不支持迭代器
priority_queue 不支持迭代器

 

  如vector 的迭代器是随机迭代器,遍历vector可以有以下几种方法:

  

vector
v(10);int i;for (int i = 0; i < v.size; ++i){ cout << v[i]; //根据下标随机访问}vector
::const_iterator it;for(it = v.begin(); it != v.end(); ++it) cout << *it;for(it = v.begin(); it < v.end(); ++it) cout << *it;

  

 list的迭代器是双向迭代器,正确遍历方法为:

list
v;list
::const_iterator it;for(it = v.begin(); it != end(); ++it) cout << *it;

`  错误做法:

for(it = v.begin(); it < v.end(); ++it)        cout << *it;    或    for (int i = 0; i < v.size; ++i)        cout << v[i];    //双向迭代器不支持 <,list没有[]成员函数

 

 

 

  

转载于:https://www.cnblogs.com/DSYR/p/9124924.html

你可能感兴趣的文章
TCL:表格(xls)中写入数据
查看>>
Oracle事务
查看>>
String类中的equals方法总结(转载)
查看>>
属性动画
查看>>
标识符
查看>>
给大家分享一张CSS选择器优选级图谱 !
查看>>
Win7中不能调试windows service
查看>>
通过httplib2 探索的学习的最佳方式
查看>>
快来熟练使用 Mac 编程
查看>>
Node.js 入门:Express + Mongoose 基础使用
查看>>
一步步教你轻松学奇异值分解SVD降维算法
查看>>
使用pager进行分页
查看>>
UVA - 1592 Database
查看>>
Fine Uploader文件上传组件
查看>>
javascript中的传递参数
查看>>
objective-c overview(二)
查看>>
python查询mangodb
查看>>
consonant combination
查看>>
驱动的本质
查看>>
Swift的高级分享 - Swift中的逻辑控制器
查看>>