from: http://blog.csdn.net/huangyimin/article/details/6133650


好多东西学了过段时间就忘,忘了再搜索再学。也许人一生忘记是硬道理,学习也是硬道理吧!见到下面的短文很好,便引用到此,以备后忘!!!

stl包括容器、迭代器和算法


容器

用于管理一些相关的数据类型。每种容器都有它的优缺点,不同的容器反映出程序设计的不同需求。容器自身可能由数组或链表实现,或者容器中的每个元素都有特殊的关键值。

迭代器

用于遍历一个数据集中的每个元素。这些数据集可能是容器或者容器的子集。迭代器的主要优点是它们为任意类型的容器提供一个小巧并且通用(注意通用很重要) 的接口。例如,迭代器接口的一个操作是让它依次遍历数据集的每个元素。这个操作是依赖容器的内总部结构独立完成的。迭代器之所以有效是因为容器类提供它自 己的迭代器类型来做“正确的事”,容本身的迭代器了解容器的内部结构。

迭代器的接口几乎相当于普通的指针。让一个迭代器递增只需调用++操作符。使用*操作符可以得到迭代器引用的数据值。因而迭代器可以被任为是一种智能指针。

算法

被用于处理数据集中的元素。例如它们可以搜索、排序、修改数据或者其他目的。算法使用迭代器,因此,一个算法只需被编写一次就可以用于任意的容器,因为迭代器的接口对所有类型的容器是通用的。这就是find()的位置。

为了给算法更多的扩展性,需要提供一些被算法调用的附属函数。可以使用通用算法去适应非常特别和复杂的需求。你可以提供自己的搜索标准或者特殊的操作去绑定元素。

STL的概念是将数据和操作独立开来。数据由容器类管理,而操作是由可配置的算法定义。迭代器则是这两个元素之间的线索。它允许任何算法和容器的交互。

在某种意义上,STL的概念有勃于面向对象编程的初衷:STL将数据和算法分离而非绑定它们。然而,这样做的理由非常重要:原则上,你可以将任何容器同任何算法绑定,得到的结果是STL是非常可扩展的。

STL的一个标准是它支持任意数据类型。“标准模板库”意味着,所有部分是适应任意类型的模板。STL是通用编程的例子。容器和算法对任意类型和类都是通用的。

STL甚至提供更多的通用组件。使用 适配器 和函数体,你可以为特定需要补充、限制和配置算法和接口。

例子

一个find Vector的例子(BAIDU里找的),注意find不属于vector的成员,而存在于算法中,应加上头文件#include <algorithm>:

#include <vector>
#include <algorithm>
#include <iostream>

int main( )
{
    using namespace std;

vector<int> L;
    L.push_back( 1 );
    L.push_back( 2 );
    L.push_back( 3 );
    L.push_back( 4 );
    L.push_back( 5 );
    vector<int>::iterator result = find( L.begin( ), L.end( ), 3 ); //查找3
    if ( result == L.end( ) ) //没找到
        cout << "No" << endl;
    else //找到
        cout << "Yes" << endl;

}

vector容器与find算法相关推荐

  1. C++ vector 容器的全排列算法 next_permutation

    问题源于我要对4个数进行排列,自己用了笨拙的穷举算法一个4重循环也得到结果,其中对有相同字母的做排序加删除相邻相等元素的处理.可是如果对100个数进行排列难道用100重循环,后来发现C++11有现成的 ...

  2. vector 容器 动态数组总结

    vector 容器 动态数组总结 二话不说直接上代码 #include <vector> #include <algorithm> #include <iostream& ...

  3. vector容器的用法

    转自一篇博客^-^: 1 基本操作 (1)头文件#include<vector>. (2)创建vector对象,vector<int> vec; (3)尾部插入数字:vec.p ...

  4. STL vector 容器介绍

    介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通 ...

  5. C++ vector容器 find erase的使用:查找并删除指定元素

    概念:容器.迭代器.算法 STL包括容器.迭代器和算法: 容器 用于管理一些相关的数据类型.每种容器都有它的优缺点,不同的容器反映出程序设计的不同需求.容器自身可能由数组或链表实现,或者容器中的每个元 ...

  6. JAVA vector的遍历_谈谈vector容器的三种遍历方法

    说明:本文仅供学习交流.转载请标明出处.欢迎转载! vector容器是最简单的顺序容器,其用法相似于数组.实际上vector的底层实现就是採用动态数组.在编敲代码的过程中.经常会变量容器中的元素,那么 ...

  7. STL vector容器

    介绍  这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用. ...

  8. java中vector容器,vector向量容器(常用的使用方法总结)

    关于STL中vector容器的学习,编译运行后边看代码,边看执行结果效果更佳,还是想说看别人的代码一百遍,不如自己动手写一遍. vector向量容器不但能像数组一样对元素进行随机访问,还能随时在尾部插 ...

  9. 详解vector容器(应用+模拟实现,vector相关练习题)

    vector容器 动态的顺序表,数组. vector操作 vector操作及其概念 构造 vector<int>v1;vector<int>v2(10, 5);vector&l ...

最新文章

  1. 一致性哈希算法----- 解决memecache 服务器扩容后的数据丢失。
  2. eclipse无法运行 ,报错:the selection cannot be launched
  3. Java获取各种常用时间方法
  4. Python3 lambda表达式使用示例
  5. 网页视频播放php拉伸代码,网页在线视频播放代码大全
  6. OAG – WhoIsWho 同名消歧竞赛发布 | 10万元奖金双赛道
  7. mysql的执行效率_数据库执行效率的对比测试
  8. 南风表情包小程序完整版源码 后台API+前端
  9. oracle 函数怎么个写法,Oracle表值函数的两种写法
  10. Python 字典 get() 方法
  11. 数据驱动的物流网络体系
  12. Unity遮罩简单复刻2D平台《Unbound: Worlds Apart》游离于世界之海的双重世界效果
  13. 小镇青年程序员的逆袭人生:从差点回老家到荔枝技术骨干
  14. matlab catia程序,利用VBA进行CATIA二次开发的基本流程 | 坐倚北风
  15. 作文素材:看完这23种蔬菜描写,恨不得穿过屏幕吃掉它们!
  16. memset和memset_s
  17. dos攻击原理及攻击实例(带脚本)
  18. Android照片墙加强版,使用ViewPager实现画廊效果
  19. android发送电子邮件,Android发送电子邮件
  20. 论泥石流是怎么熬成的——我在飞桨学习图像分类(opencv)的心得与体验

热门文章

  1. stm32qspi内存映射_STM32F7-discovery QSPI接口使用心得
  2. 使用url连接mysql时的属性_MySQL数据库连接属性配置,即URL后一些配置参数及其重要性...
  3. python随机生成车牌_使用Python自动化获取全国每个城市的车牌代码
  4. mysql计算1000天后的日期_mysql,数据库_mysql 计算某个时间,多少天后,多少个月后时间戳,mysql,数据库,数据库设计 - phpStudy...
  5. adadelta算法_神经网络中常用的优化算法
  6. 复杂存储过程学习_对象存储在无人驾驶高精度地图的场景实践
  7. Windows Server 2008服务器管理新技巧6则第4/4页
  8. Python基础day4 函数对象、生成器 、装饰器、迭代器、闭包函数
  9. 2.5-冗余VLAN
  10. iOS imageNamed 的缓存问题