关于⼆分查函数binary_search的结构体struct运⽤在做⼀道题⽬的时候,需要在结构体容器中查是否存在满⾜等于某个值的结构体中其中的⼀个元素的结构体在这个容器中。(有点绕⼝)但苦于元素是结构体的时候⼀筹莫展,由⽼师启发尝试重载运算符,从⽽实现了可以⽤于结构体的⼆分查函数的运⽤。 ⼀、⼆分查binary_search基本⽤法
体育的力量
头⽂件是#include <algorithm>(当然还是⼒推万能头⽂件#include <bits/stdc++.h>!!(逃
komda 其实现的是以复杂度为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;
tempt = 0; //这⼀步可以随意赋值(按题⽬要求来),我们任务仅仅是判断容器中有元素的num等于a
binary_search(q.begin(),q.end(),temp);
//核⼼代码,第⼀个是容器的⾸迭代器,第⼆个是容器尾迭代器,第三个是含有我们⽬标num==a的temp