一些无聊 的小发现

一些无聊 的小发现

持续更新ing……

1.

lower_bound返回的是一个地址,而加了 '*' 是直接返回这个地址的信息,直接输出的话是等效于image-20220207152552777的。但是加了 ‘ * ’后是可以直接对这个地址的信息进行操作的!也就是说你可以直接修改这个地址上的信息!比如说image-20220207152834507这样。当然也可以这样image-20220207152931266引用这个位置的元素,
像这样修改这个位置的信息。

:“引用这个位置上的信息”的意思是,此时的 \(t\) 就相当于 \(*lower……\) 修改 \(t\) 的值就是修改 $*lower…… $ 的值。通俗点说,
这一步操作就相当于给 \(*lower……\) 这个东东起了个小名 \(t\)\(*lower……\) 这个就是他的大名,无论是叫他的小名还是叫大名,都是指的那一个东东。

2. #&& 的优先级比 || 高

比如

image-20220208151646634就是完全不同的含义

3. 转义字符

定义
由于转义字符的设定,无论是字符串还是字符中出现 '' 会被默认识别为转义字符,从而导致某些错误。这是要用 "\" 来表示单个 '' 。
论述完毕。

4. 关于 scanf 的nb应用

一、scanf函数是有返回值的

已成功赋值返回 \(true\) , 出错时则返回 \(EOF\) ,

注:\(EOF\) (\(End\) \(Of\) \(File\))是一个预定义的常量,等于 \(-1\) .

所以在不指明数据组数时,我们可以利用 scanf 来轻松来解决

二、scanf可以规定输入格式

当然也可以规定输出格式 (大家肯定都知道)

例如在 AcWing323 战略游戏

输入格式如下图所示

格式

这时我们就可以用 scanf 轻松解决

scanf 高位补零


输出 2 位数,不足的高位补零。

scanf 按16进制输出


三、关于邻接表

一个题,调了我两天!

邻接表的 \(head\) 储存的是上一条边的编号

所以说,当编号从 \(0\) 开始的时候,\(head_i\) = \(0\) 是合法的一种情况。这时 \(head\) 就必须初始化成一个负数( \(-1\)

从零开始存储编号有什么好处呢(无向图)?

这时我们的编号 [0 , 1] , [2 , 3] , [4 , 5] …… 是一条边的正反向路径,显然在已知一边的编号为 \(k\) 那反向边即为 \(k \bigoplus 1\)。并且奇数为反向边,偶数为正向边。


四、set的 \(erase\) 函数的使用



注意: 无论是那种方式,\(erase\) 函数都是有返回值的!!!
实例如下图

由于第二种使用方法的返回下个位置的指针的特性,我们就可以这么用

在枚举的过程中删除!!!/se

posted @ 2022-02-09 14:56  Simon_...sun  阅读(54)  评论(1)    收藏  举报