伊伊伊利

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C++ 学习

  1. string与vector都可以用[]下标方式访问数据;
  2. string中下标取出的数据为char类型;
  3. vector中删除最后一个元素pop_back(),除此之外只能用迭代器erase()删除,clear()清空;
  4. vector添加元素push_back(),或者迭代器添加insert();
  5. %c遇到'\0'输出空格,%s遇到'\0'停止;
  6. 输入数据大小未知的情况下,跳出输入loop的方式有if(cin.get()=='\n') break;
  7. xcode中command line tool新建项目;
  8. stl容器的区别:
    1. set底层为Hash,用于查找频繁且value唯一;
    2. list为双端链表,用于频繁插入,不可使用[]访问;
    3. vector较均匀,用于后端插入频繁,[]遍历使用;
    4. 拷贝构造函数声明形式:CClass(CClass &class),定义中需注意继承的基类参数以及私有公共变量(特别是指针);
  9. 类定义时,构造函数可使用explicit关键字关闭将构造函数用作自动类型转换函数的特性,即不能进行自动地隐式类型转换,只能显式地进行类型转换.(⚠️只有一个参数的构造函数,或者构造函数有n个参数,但有n-1个参数提供了默认值才可使用);
  10. 类定义时,析构函数使用virtual关键字,使得继承类在析构时也会调用该类的析构函数,有效防止内存泄漏;
  11. 容器的储存实现方式相当于数据结构,ex.vector的数据结构是双向链表、unordered map的数据结构是哈希表等等;
  12. 类new出来在堆上(⚠️非栈),所以需要自己析构,delete之后需制空;
  13. 构造为子类->父类 , 析构为父类->子类;
  14. csv文件格式可直接将文本信息转化为EXCEL文件,格式为str,str,str;
  15. cin << 无法处理空格 cin.getline(str, size)可处理整行输入 cin.get()与getline类似,但get(str, size)会将换行符留在输入队列,需时候cin.get()解决多次输入的问题,或使用cin.clear();
  16. 原始字符串以R"(str)"实现,可实现\n的原始写出,不需使用\"\\n\"、若想显示"(str)"的写入,可通过R"+*(str)+*"实现; 
  17. 共同体union能够存储多种数据类型,但只能同时存储其中一种;
  18. double精度问题可使用math.h中的向下取整floor()与向上取整ceil(),四舍五入round();
  19. auto(自动类型推断)、typedef(创建类型别名)、decltype(声明相同类型);
  20. cin >> 仅获取空格\空行之前的数据;
  21. qtcreater中可在配置文件中  CONFIG += console c++11,实现终端的配置;
  22. 按引用传递使用的内存和时间都比按值传递少;
posted on 2021-08-11 15:24  伊伊伊利  阅读(47)  评论(0)    收藏  举报