一些无聊 的小发现
一些无聊 的小发现
持续更新ing……
1.
lower_bound返回的是一个地址,而加了 '*' 是直接返回这个地址的信息,直接输出的话是等效于
的。但是加了 ‘ * ’后是可以直接对这个地址的信息进行操作的!也就是说你可以直接修改这个地址上的信息!比如说
这样。当然也可以这样
引用这个位置的元素,
像这样修改这个位置的信息。
注:“引用这个位置上的信息”的意思是,此时的 \(t\) 就相当于 \(*lower……\) 修改 \(t\) 的值就是修改 $*lower…… $ 的值。通俗点说, 
这一步操作就相当于给 \(*lower……\) 这个东东起了个小名 \(t\) 。 \(*lower……\) 这个就是他的大名,无论是叫他的小名还是叫大名,都是指的那一个东东。
2. #&& 的优先级比 || 高
比如

与
就是完全不同的含义
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\) 函数都是有返回值的!!!
实例如下图

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

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

                
            
浙公网安备 33010602011771号