【C/C++】全局变量只能初始化不能赋值

  • C/C++中,全局变量只能声明、初始化,而不能赋值
  • 也就是说,下面这样是不被允许的:

    错误提示是:
  • 声明、初始化与赋值的区别:
    • 声明:int a;
    • 初始化:int a = 2;(在声明的时候顺带赋值叫做初始化)
    • 赋值:a = 2;
  • 只有定义(int a;)才分配存储空间,初始化必须要有存储空间来初始化
  • 全局变量在声明时候顺带赋值(也就是初始化)是可以的,但是如果先声明,不赋值,之后再赋值的话,程序是执行不到这里的,也无法通过编译。

【C++】判断两个vector是否相等~直接用“==”

  • 如果vector里面的元素类型是简单类型(内置类型),可以直接使用“==”或者“!=”进行比较

  • 甚至可以使用“<=” “<” “>=” “>”比较两个vector大小:按照字典序排列

【C++】fill函数,fill与memset函数的区别

  • memset函数
    • 按照字节填充某字符
    • 在头文件<cstring>里面
  • fill函数
    • 按照单元赋值,将一个区间的元素都赋同一个值
    • 在头文件<algorithm>里面
  • 因为memset函数按照字节填充,所以一般memset只能用来填充char型数组,(因为只有char型占一个字节)如果填充int型数组,除了0和-1,其他的不能。因为只有00000000 = 0,-1同理,如果我们把每一位都填充“1”,会导致变成填充入“11111111”
  • 而fill函数可以赋值任何,而且使用方法特别简便:
    • fill(arr, arr + n, 要填入的内容);
    • 例如:

    • vector也可以:
  • 而memset的使用方法是:

【C++】用sort函数产生的段错误问题

sort函数的cmp必须按照规定来写,即必须只是 > 或者

比如:
return a b;
return a < b;

而不能是 <= 或者 >= ,(实际上等于号加了也是毫无意义,sort是不稳定的排序),否则可能会出现段错误