首页 > 其他分享 >杂

时间:2024-04-10 21:44:07浏览次数:8  
标签: set const int bound 重载 id

指针

lower_boundupper_bound运用时的返回值是指针,可以用 auto 来存储(现在比赛基本都 c++14 了,放心用)。有时常见的解决方法为‘减去数组’,如:

int a[N], n, x;
int k = lower_bound(a + 1, a + n + 1, x) - a;

此外,还有很多 STL 函数的返回值是迭代器,与指针区别不大,可以视作指针。
但结构体数组或是一些 STL (如 set) 返回的好像不是很好操作,还是用 auto 存。以下为一些运用方法:

struct a{
	int id;
	bool f;
};
set<a> st;
//假设 set 中插入了很多值
auto k = upper_bound((a){1, 1});
a x = *k;

int y = k -> id; //等同于 y = x.id
bool z = k -> f; //等同于 z = x.f
if(k != st.end()){ //可以直接比较
	k --; //将指针前移一位
}

重载运算符

常运用于结构体函数中,改变重载运算符号的作用。
一般形式为:
* operator *('const' * &x)'const'{}
第一个 * 为函数返回类型;第二个 * 为重载的运算符号;第三个 * 为读取的 \(x\) 的类型。
两个 const 都是可有可无的,但都有作用。第一个 const 可令 \(x\) 的值不会被改变;第二个 const 可令原有的进行运算的值不会被改变。

struct node{
	int id;
	bool f;
	
	inline bool operator <(const node &x)const{
	//返回类型为 bool, 重载 <,读入 x 类型为 node
	//使 x 不会被更改,使 id、 f 不会被更改
	//id, f 表示原结构体中的 id, f
	//x.id, x.f 表示 x 中的 id, f
		if(f ^ x.f) return f < x.f;
		return id < x.id;
	} //此结构体中的 < 以 f 为第一关键字,id 为第二关键字进行比较
};
set<node> st;
//此 set 中的 < 因 node 被重载而重载

标签:,set,const,int,bound,重载,id
From: https://www.cnblogs.com/biuld/p/18127453

相关文章