版权声明:欢迎转载评论 https://blog.csdn.net/m0_37809890/article/details/82429069
前言
现在写程序有时会受困于C++的语法,虽然竞赛的核心是算法,但是更好地掌握一门语言总是不亏的。
BGM:Love Me Like You Do (Violin Cover)
零散的总结
- 变量初始化有两种方式,复制初始化
int a = 5
,直接初始化int a(5)
,直接初始化更灵活且效率更高。 - 构造函数快速初始化的方式
Myclass(int a, int b): a(a),b(b){}
- 直接的数字和字符串称为字面值常量,意为只能用值称呼的常量,如
5
,"string"
。 - 字符串字面值可以用反斜杠分割以换行。
- 位操作,波浪线表示按位取反(注意符号位),爆int时可以使用
1ull
.
- set(x)
num |= 1<<x
- reset(x)
num &= ~(1<<x)
- test(x)
num & (1<<x)
- flip(x)
num ^= 1<<x
- set(x)
- 关于数组:c++推荐vector而不是数组,new与delete面向动态数组,替代了c中的malloc和free,语法如下:
int *pia = new int[10]
,delete [] pia
。 - 多维数组:严格的说c++中没有多维数组,类似
int arr[3][5]
的写法会被认为声明了一个长度为3的数组,数组中的元素是长度为5的数组。这就是为什么函数传多维数组时必须声明除第一维外其他维的范围,见下例。
void foo(int (*arr)[5] ){} //yes
void bar(int arr[][5] ){} //yes
void fun(int arr[][] ){} //error - 使用前置自增(自减)操作符,可以在复杂情况下获得更高的效率
- 容器包括顺序容器*vector,list,deque(发音deck),容器适配器stack,queue,priority_queue,关联容器*(multi)set,(multi)map.
- 非输入输出的迭代器有3个级别:前向迭代器,双向迭代器,随机访问迭代器,泛型算法库中的算法会根据容器的迭代器级别使用不同的操作方式。(迭代器这章没怎么看懂)
- 泛型算法库中的算法,效率上小于等于容器的成员算法。
- struct和class的唯一区别是,未指定标号的成员在前者默认public,在后者默认private.
- 待续