STL 三大组件介绍
来源:互联网 发布:关联规则算法推荐系统 编辑:程序博客网 时间:2024/06/05 05:57
转载请注明出处:http://blog.csdn.net/liulongling/article/details/51263413
1.容器概念介绍
STL 中容器是指存储有限数据元素的一种数据结构。比如栈(stack),队列(queue)...那么什么是数据结构,我们研究把数据按照特定的方式排列起来,便于我们查找 删除 排序或者其他一些目的,这种不同的排列方式我们就可以叫数据结构。
这里面还包含了一层含义:容器可以包含容器(公园和花坛都是容器,公园可以放花坛)
如果你在情人节想去公园采摘一朵桃花送给爱人,那么你怎么能快速定位桃花的位置。是不是需要公园的所有花按照一定的规则排序,这样你就能快速摘到一朵桃花,像这种按照不同的规则排列,这种不同的排列就叫做数据结构。
在STL中容器又分为:序列式容器和关联式容器。
序列式容器就是根据花进入花坛的时间和地点来决定花在那个位置,跟是什么花没关系
关联式容器是指花坛里要种什么花按照一定规则确定好了。
2.迭代器介绍
迭代器是一种抽象出来的概念,现实中不容易找出来某项事物与之对应,所以较难理解。
但是在我们程序中,比如我们写的数据,我们通过[]操作符遍历取值,那么[]就是一个迭代器,也必须说我们经常用的指针,他也是一种迭代器。
迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素, 每个迭代器对象代表容器中的确定的地址。迭代器修改了常规指针的接口,所谓迭代器是一 种概念上的抽象:那些行为上像迭代器的东西都可以叫做迭代器,也就是说迭代器就是对我们普通的指针做了一层封装,其行为也类似指针。我们现在呢?可以单纯得把迭代器理解为, 它就是一个指针,用来指向不同的元素,既然是指针,那么指针的一些基本运算操作,比如*、++、==、!=、=,迭代器也可以进行这样的操作。
3算法介绍
以有限的步骤,解决逻辑或者数学上的问题,这门学科我们就叫做算法。一般来说,我们每天都在写各种各样的算法,比如我们写的每一个函数,它被用来解决或大或小的问题。在我们工作中,我们要写一个算法来解决一个问题的时候,那么需要考虑你写的算法需要消耗的计算机资源,包括时间和空间,如果你写一个算法需要消耗 1G 内存来解决这个问题,那么你这个算法也就没有什么价值了.STL 为我们的提供的算法,都很高效,而且还有个最大的特点,可复用性。那么我们学习算法,就很简单了,我们只需要去熟悉并且能熟练应用 STL 为我们提供的常用算法 就 OK 了
容器算法迭代器实现基本原理
<pre name="code" class="cpp">//// main.cpp// STL三大组件//// Created by 刘龙玲 on 16/5/1.// Copyright © 2016年 liulongling. All rights reserved.//#define _CRT_SECURE_NO_WARNINGS#include<iostream> #include<string> using namespace std; //算法int mycount(int* start, int* end, int val){ int n = 0; for (int* it = start; it != end;it++){ if (*it == val) { n++; } } return n;}int main(){ //容器=>数组 int arr[] = { 1, 2, 3, 5,4, 5, 6 }; //迭代器 [] int*p []也是一种迭代器 int* pStart = arr; //开始迭代器 int* pEnd = &(arr[sizeof(arr) / sizeof(int)]); //结束迭代器 //p++; //cout << *p << endl; //p++; //cout << *p << endl; //遍历容器 while (pStart != pEnd){ cout << *pStart << endl; pStart++; } int n = mycount(pStart, pEnd, 5); //算法 通过迭代器对容器中的元素进行统计 cout << "n:" << n << endl; system("pause"); return EXIT_SUCCESS;}
总结
容器就是数据结构,用来将数据元素按照一定的规则进行排列,不同的容器拥有不同的排列规则,不同的排列规则可以达到不同的数据操作特点,比如数据这种数据结构,我们随 机存取就很高效,算法就是提供对容器数据元素的一些操作,比如遍历容器元素,删除容器素等迭代器就是容器和算法之间的桥梁,粘合剂,用来将两个相对独立的部件建立起关系。
STL 中容器和算法的设计是彼此分离,这样的好处就是:
1.容器和算法的编写可以分别编写,互不影响
2.容器只需要提供迭代器 算法只需要拿到迭代器就可以完成容器和算法之间的关联和操作
- STL 三大组件介绍
- flume-ng三大组件介绍与应用
- STL认识-6大组件
- STL的6大组件
- STL(三)-vector介绍
- OpenStack三大组件
- Spring三大组件
- JavaWeb三大组件
- JavaWeb三大组件
- javaweb三大组件
- java三大组件
- STL各大组件及其关系
- C++的stl的6大组件
- Scrapy五大组件介绍
- Spring MVC 三大组件
- Log4j三大组件运行机制
- spring 三大基本组件
- javaweb三大组件--过滤器
- RxJava----操作符:转换操作符
- hibernate——继承关系以及三个subclass标签的区别
- <Programming Collective Intelligence>
- 缓存淘汰算法--LRU算法
- 泛型笔记,类,方法
- STL 三大组件介绍
- Flink Event Time , Processing Time 和 Ingestion Time概念
- HDU 2136 Largest prime factor
- 关于Integer的parseInt(String s, int radix)方法的使用
- iOS开发中的基于CAShapeLayer和贝塞尔曲线的圆形进度条动画
- Ogre Lod的一个bug及其修改
- java--集合框架的Hashset和Treeset
- LeetCode 51/52. N-Queens i, ii
- 测量