STL笔记
2018-06-17 20:32:38来源:未知 阅读 ()
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<int> v(10); int i; for (int i = 0; i < v.size; ++i) { cout << v[i]; //根据下标随机访问 } vector<int>::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<int> v; list<int>::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没有[]成员函数
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:lock free
- OpenCV开发笔记(五十九):红胖子8分钟带你深入了解分水岭 2020-05-24
- C++仿函数 2020-05-16
- 算法笔记刷题6 ( PAT 1003我要通过 ) 2020-05-08
- STL之list 2020-04-30
- STL之deque 2020-04-29
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash