C++ 令人无语/好用的语法合集

此贴用来总结一些傻逼C++语法,或者坑了我很久的写法。

1、(坑)重载 > , < , == 时,千万不要使用 pair 为基的 typedef!!!!!!

pii 的 max 不受你的重载影响,它自己有自己的 max,然后 typedef 和 define 是相同的,基本可以看做直接替换,不会对作用域/命名做区分。

2、(坑)lower_bound(..,..,{x,y}) 会报错,不能自动推断,必须写 m_p ,ll和int不转换同理。

3、(坑)当一个struct有非默认构造的时候,就必须有默认构造,如

struct Line{int k,b;Line(int kk,int bb){k=kk,b=bb;}};

是会报错的。

需改为:struct Line{int k,b;Line(){k=b=0;}Line(int kk,int bb){k=kk,b=bb;}};

4、(糖)struct可以用 Line{..,..} 的方式构造,变量顺序放入即可。但请注意,在 m_p()一个 pair<Line,int> 时,请打括号,如 m_p((Line{2,1}),2); 否则会CE。

5、(糖)void solve(vector<int> (&G)[MAX]){return ;} 可以把一个图当成变量传进去!

6、(坑)结构体A和B的实例存在相互调用的时候,需要使用前置声明。

点击查看代码
struct B{
	void op2(){
		cout<<"op2"<<endl;
	}
	void op3();
};
struct A{
	void op1();
	void op4(){
		cout<<"op4"<<endl;
	}
};
A a;
B b;
void B::op3(){
	a.op4();
}
void A::op1(){
	b.op2();
}

7、(坑)在 redefine 之前,需要先 undef 之前的(否则会warning),undef ls(x)这个东西的时候,直接写 undef ls 就行了 ,多写了会报warning

posted @ 2024-02-23 22:58  皮皮的橙子树  阅读(55)  评论(0编辑  收藏  举报