首页 > 其他 > 详细

关于二分查找binary_search的结构体struct运用

时间:2021-08-29 21:58:29      阅读:19      评论:0      收藏:0      [点我收藏+]

在做一道题目的时候需要用到二分查找。

但苦于元素是结构体的时候一筹莫展,由老师启发尝试重载运算符,从而实现了可以用于结构体的二分查找函数的运用。

 

一、二分查找binary_search基本用法

 

  头文件是#include <algorithm>(当然还是力推万能头文件#include <bits/stdc++.h>!!(逃

  其实现的是以复杂度为O(logN)的二分查找数组或容器内是否有需要查找的元素。返回值类型为bool型(查找到为1,否则为0)。

  最简单的(非结构体)形式例如:

    数组中:binary_search(a, a+n, value);  //判断数组a在0到n的范围内是否有value

    容器中:binary_search(a.begin(), a.end(), value)  //判断整个容器a中是否有value

 

二、binary_search结合struct的用法

 

  譬如我们给出以下的结构体node

struct node
{
  int num;
  int cnt;
  bool operator<(const node& b)const 
  {
    return this->num < b->num;
  }
};

 

  我们现在再定义一个容器,就拿最简单的vector的举例:

vector<node> q;

 

  再一个个插入元素后(略去不表),我们可以通过以下方式判断结构体node中是否有num相同的元素:

cin>>a;  //a是我们需要在结构体容器中查找是否有元素的num==a的a
node temp;  //建立一个暂时的temp变量
temp.num = a;
temp.cnt = 0;  //这一步可以随意赋值(按题目要求来),我们任务仅仅是判断容器中有元素的num等于a
binary_search(q.begin(),q.end(),temp);  
//核心代码,第一个是容器的首迭代器,第二个是容器尾迭代器,第三个是含有我们目标num==a的temp

 

关于二分查找binary_search的结构体struct运用

原文:https://www.cnblogs.com/Lisavila-Lee/p/15202471.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!