您的位置:首页 > 编程语言 > C语言/C++

c++学习心得:STL初学(基础篇)

2019-03-28 17:22 85 查看

标准函数库(STL)学习心得(基础篇)

STL主要由两种组件构成:一是容器,包括vector、list、set、map等类;另一种组件是用以操作这些容器的所谓的泛型算法包括find()、sort()等。
容器又分为两种:
1、顺序型容器:vector和list,顺序型容器会依次遍历第一个、第二个、·········、直到最后一个元素,我们在顺序型容器主要进行迭代(iterate)操作
2、关联容器:map、set,关联容器更容易帮助我们快速查找容器中的元素值。map是一对key/value组合,key用于查找,value用来表示我们要储存或取出的数据。而set仅含有key,我们对它进行查询操作为的是判断一个值是否存在其中。
另一种为泛型算法:
泛型算法提供了许多可作用于容器类以及数组类型上的操作。所谓泛型,就是与被操作的元素的类型无关(不用关心元素的类型是int、double还是string),它们同样与容器类独立(不论是vector、list还是array)。
泛型算法借助一对iterator(first和last),标识我们要进行的迭代的范围,如果first=last,算法只作用于first所指元素,如果first不等于last,指针便首先作用于first所指元素,并将first递增,再将frist和last比较相等,如此持续下去,知道first等于last。

现在需要进行下面工作。给定一个储存整数的vector,以及一个整数值。如果此值存在于vector内,返回一个指针指向该值,否则返回0,表示此值不在vector内

int *find(vector<int> &ivec,int value)
{
for(int i=0;i<ivec.size();i++)
{
if(ivec[i]==value)
return &ivec[i];
}
return 0;
}

现在需要这个函数能够处理所有类型,前提该类型有定义的相等运算符

template<class T>
T *find(vector<T> &tvec,T value)
{
for(int i=0;i<tvec.size();i++)
{
if(tvec[i]==value)
return &tvec[i];
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: