关于二分查找binary_search的结构体struct运用
Posted LisavilaLee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于二分查找binary_search的结构体struct运用相关的知识,希望对你有一定的参考价值。
在做一道题目的时候需要用到二分查找。
但苦于元素是结构体的时候一筹莫展,由老师启发尝试重载运算符,从而实现了可以用于结构体的二分查找函数的运用。
一、二分查找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运用的主要内容,如果未能解决你的问题,请参考以下文章