菜鸟笔记
提升您的技术认知

vector中的find-ag真人游戏

今天又忘了怎么在vector中查找某一个值。。唉。。每次都忘。。现在记下来。。(- -!)

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

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

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

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

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

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

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

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

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

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

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

#include
#include
#include

int main( )
{
    using namespace std;

    vector l;
    l.push_back( 1 );
    l.push_back( 2 );
    l.push_back( 3 );
    l.push_back( 4 );
    l.push_back( 5 );
    vector::iterator result = find( l.begin( ), l.end( ), 3 ); //查找3
    if ( result == l.end( ) ) //没找到
        cout << "no" << endl;
    else //找到
        cout << "yes" << endl;

}

网站地图