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.
容器只需要提供迭代器 算法只需要拿到迭代器就可以完成容器和算法之间的关联和操作 

0 0
原创粉丝点击