[C++] emplace_back and push_back

在向容器,如std::vector中添加元素时,常常使用push_back(var),这个时候,往往元素要经过拷贝(copy)或者移动(move)才能放进容器中。 而emplace_back()方法则能够就地构造元素(参数列表与元素某个构造函数的参数列表相同,该方法直接将构造的对象放到容器中,不用经过拷贝或者移动),效率更高。 References https://stackoverflow.com/questions/4303513/push-back-vs-emplace-back https://blog.csdn.net/xiaolewennofollow/article/details/52559364

[C++] 涉及类的关键词

C++11里面有许多关键词,以前稍微学过,但是不多用。这几天看一些代码,重温一下这些关键词。 位于函数声明尾部 如 datatype function_name() keyword; const const关键词表示该函数不修改类成员变量。 overide overide表示该函数覆盖掉父类同签名函数的声明。没有overide关键词时,父类的同名函数被hide,需要使用 using fatherClass::function_name; 才能调用父类声明的函数。 = 0 该关键词与virtual一起使用,指明该函数为纯虚函数,子类必须定义。 = default 在C++11中,为了解决特殊成员函数的问题,例如程序员定义的默认构造函数X::X() {}效率并不如编译器自动生成的默认构造函数,引入了defaulted特殊成员函数。在特殊成员函数后面加上= default后,编译器便会自动生成较高效率的默认构造函数。 C++中类的特殊成员函数有:Default constructor, Copy constructor, Move constructor (C++11), Copy assignment operator, Move assignment operator (C++11), Destructor. = delete 在C++11中,为了解决成员函数禁用的问题,引入了delete关键词。成员函数禁用的情况主要有两种:(1)我们想禁止默认复制构造、默认复制赋值;(2)我们不希望子类调用父类的某些函数。

A short tour of markdown

俗话说工欲善其事,必先利其器,今天开始用Markdown写一些笔记,首先应当把markdown熟悉一下,掌握大概框架,以后会更加顺畅。 [TOC] 大标题用一个#号 特殊符号 标题:# 黑体:** 斜体:* 分点:“- ” 背景色:` 引用:”> ” 快捷键 加粗:command + B 斜体:command + I 有序列表:command + option + O 无序列表:command + option + U 引用:command + option + Q 表格 typora使用表格只需按格式键入表格第一行,如下: |项目|价格|数量| 然后键入回车就生成下面的表格,而且在typora中可以很方便调整表格 项目 价格 数量 苹果 12000 3 香蕉 2 6 代码块 使用` \ + 所用语言 #include <iostream> int […]