【学习笔记】C++ Primer

版权声明:欢迎转载评论 https://blog.csdn.net/m0_37809890/article/details/82429069

前言

现在写程序有时会受困于C++的语法,虽然竞赛的核心是算法,但是更好地掌握一门语言总是不亏的。

BGM:Love Me Like You Do (Violin Cover)

零散的总结

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

猜你喜欢

转载自blog.csdn.net/m0_37809890/article/details/82429069