zoukankan      html  css  js  c++  java
  • cb29a_c++_STL_算法_查找算法_(2)search_n

    cb29a_c++_STL_算法_查找算法_(2)search_n
    //比如:连续查找连续的n个8
    search_n(b,e,c,v),迭代器b,begin(),e,end().连续的c个v
    pos=search_n(ideq.begin(), ideq.end(), 4, 3);

    search_n(b,e,c,v,p) p,谓词参数,查找的规则(条件)
    pos = search_n(ideq.begin(), ideq.end(), 3, 6, greater<int>());
    greater<int>(),预定义函数对象。
    自己做谓词,需要用二元谓词,就是两个参数的。

    特别注意:
    该算法的第二种形式应该是:
    search_n_if(b,e,c,p)//实际不能使用,委员会审查,未发现,估计是bug.
    pos=search_n_if(ideq.begin(),ideq.end(),3,bind2nd(greater<int>(),6));//实际不能使用
    等效于
    pos = search_n(ideq.begin(), ideq.end(), 3, 6, greater<int>());//这个可以。

    distance算法
    cout << "找到了连续的4个3: 当前位置:" << distance(ideq.begin(),pos)+1 << endl;

     1 /*cb29a_c++_STL_算法_查找算法_(2)search_n
     2 //比如:连续查找连续的n个8
     3 search_n(b,e,c,v),迭代器b,begin(),e,end().连续的c个v
     4 pos=search_n(ideq.begin(), ideq.end(), 4, 3);
     5 
     6 search_n(b,e,c,v,p) p,谓词参数,查找的规则(条件)
     7 pos = search_n(ideq.begin(), ideq.end(), 3, 6, greater<int>());
     8 greater<int>(),预定义函数对象。
     9 自己做谓词,需要用二元谓词,就是两个参数的。
    10 
    11 特别注意:
    12 该算法的第二种形式应该是:
    13 search_n_if(b,e,c,p)//实际不能使用,委员会审查,未发现,估计是bug.
    14 pos=search_n_if(ideq.begin(),ideq.end(),3,bind2nd(greater<int>(),6));//实际不能使用
    15 等效于
    16 pos = search_n(ideq.begin(), ideq.end(), 3, 6, greater<int>());//这个可以。
    17 
    18 distance算法
    19 cout << "找到了连续的4个3: 当前位置:" << distance(ideq.begin(),pos)+1 << endl;
    20 */
    21 
    22 #include <iostream>
    23 #include <algorithm>
    24 #include <deque>
    25 #include <functional>
    26 
    27 using namespace std;
    28 
    29 int main()
    30 {
    31     deque<int> ideq;
    32     for (int i = 1; i <= 9; ++i)
    33     {
    34         if (i == 3)
    35         {
    36             ideq.push_back(i);
    37             ideq.push_back(i);
    38             ideq.push_back(i);
    39             //ideq.push_back(i);
    40         }
    41         else
    42             ideq.push_back(i);
    43     }
    44     for (deque<int>::iterator iter = ideq.begin(); iter != ideq.end(); ++iter)
    45         cout << *iter << ' ';
    46     cout << endl;
    47 
    48     deque<int>::iterator pos;
    49     pos=search_n(ideq.begin(), ideq.end(), 4, 3);
    50     if (pos != ideq.end())
    51     {
    52         cout << "找到了连续的4个3: 当前序号位置:" << distance(ideq.begin(),pos)+1 << endl;
    53     }
    54     else
    55         cout << "没有找到" << endl;
    56 
    57     cout << "连续的3个大于的6的数" << endl;
    58     pos = search_n(ideq.begin(), ideq.end(), 3, 6, greater<int>());
    59     //pos = search_n_if(ideq.begin(), ideq.end(), 3, bind2nd(greater<int>(), 6));//错误//实际不能使用
    60     if (pos != ideq.end())
    61     {
    62         cout << "连续的3个大于的6的数,当前序号位置:" << distance(ideq.begin(), pos) + 1 << endl;
    63     }
    64     else
    65         cout << "没有找到" << endl;
    66 
    67     return 0;
    68 }
    欢迎讨论,相互学习。 txwtech@163.com
  • 相关阅读:
    常用的网站cms内容管理系统推荐
    PageAdmin网站内容管理系统出现403错误的解决方法
    使用PageAdmin网站内容管理系统做网站的好处
    网站建设步骤及常用建站系统分享
    企业网站建设如何选择建站公司
    如何采用PageAdmin自助建站系统来进行企业网站建设
    站群系统-站群软件系统推荐
    js计算之递归
    算法之插入排序
    javaScript设计模式之常用工厂模式
  • 原文地址:https://www.cnblogs.com/txwtech/p/12331362.html
Copyright © 2011-2022 走看看