【STL】find函数原理以及使用

1 篇文章 0 订阅

【头文件】<algorithm>

【源码】

      // find

      template <class _InputIter, class _Tp>
      inline _InputIter find(_InputIter __first, _InputIter __last,
                             const _Tp& __val,
                             input_iterator_tag)
      {
        while (__first != __last && !(*__first == __val))
         ++__first;
       return __first;

      }

可以看到,在使用find函数时,如,vector<T>::iterator it = find(iterFirst, iterLast, target)。find函数只在[iterFirst, iterLast)这样一个半开半闭的区间内搜索。所以,我们常用if(it == iterLast)来检测是否查找到目标值。

举例:

      int target = 1;

      int data[3] = {1, 2, 3};

      vector<int> v(data, data+3);

      vector<int>::iterator it = find(v.begin(), v.end(), target);      //注意:v.end()返回的迭代器指向的是v最后一个元素的下一个地址,即3后面的一个地址。该地址可能未被分配,直接访问有可能出错

      if(it == v.end()){

            cout<<"not found"<<endl;      //没找到

      }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值