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

标准函数库(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;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值