zoukankan      html  css  js  c++  java
  • 分享一个刚刚学到的骚操作与一些基础优化

    一.手动加栈

      我们有时候会栈溢出,类似于递推的时候,这时候我们就可以用到下面这个操作,来手动加栈。

    #pragma comment(linker,"/STACK:1024000000,1024000000")

      原理自行百度,预处理指令详解

    二.寄存器的运用

      其实这个相信大家C时很早就知道了,但是貌似用的人比较少。下面可以给出实际应用实例:

    int main()
    {
        for (register int i = 1; i < inf; i++) {
            printf("%d",i);
        }
        return 0;
    }

      但是,其实C++会自动优化,所以C++没必要用这个操作了。

    三.几个基础的位运算操作

      其实这个几个也很平常,很早就会了,但是还是顺便分享一下吧。

      1.除二乘二的操作

       位运算对变量的 >> 和 << 相当于除以2和乘以2,但是效率会更高一点,不用先转换。

      2.判断奇偶性

       对变量用 &1 ,在二进制中奇数的最后一位永远是1,偶数永远是2,而&1的作用就是取变量的二进制数的最后一位。

      3.异或交换两个数

       其实异或交换的  效率不如三变量交换,效率不如三变量交换,效率不如三变量交换(说三遍)

       而且在数组操作中,如果是前后交换,奇数的话最后会 自己异或自己,导致结果为 0.

    四.短路运算符 && 和 || 的巧用

      我们知道  当 && 左边的判断为 false 时,就会直接返回 false,不会继续往右判断

            而 || 左边的判断为 true 时,就会直接返回 true ,不会继续往右判断

      这样的话我们就可以用它们来  代替 if 和if-else

      

      A&&B 等同于   if(A) B;

      A&&B || C 等同于  if(A) B else C;

    五.三目运算符和代替 if-else

      其实一直都知道三目预算符,但是没想过效率,平常也就不怎么用

      A?B:C 等同于 等同于  if(A) B else C;

    六.内联函数

      如果经常调用同一函数,例如swap,不妨设置为内联函数,也就是在函数头加一个 inline

      但是如果被调用函数太过复杂的话,还是不建议用内联函数,例如dfs。

  • 相关阅读:
    朴素贝叶斯分类算法原理分析与代码实现
    决策树分类算法原理分析与代码实现
    Eclipse Java 调试基本技巧
    Eclipse Java 开发平台实用技巧
    泛型算法
    集合类型的使用示例
    异常
    内部类
    对象复制
    界面设计常用CSS属性
  • 原文地址:https://www.cnblogs.com/caibingxu/p/10657816.html
Copyright © 2011-2022 走看看