多线程函数传参慎用引用

c++11引入的多线程非常方便,结合lambda表达式可以快速将单线程程序改为多线程。 c++使用引用传参是一个常用的技巧,可以减少数据拷贝…

std::swap

std::swap(a,b)并不是c++11基于std::move实现的swap,想调用c++11版本的正确使用方法为 using std:…

K个不重复随机数的生成

std::vector<int> Random(std::vector<int> a, int K) { std::…

unordered_map不一定比map快

unordered_map是基于Hash的结构,查询速度可以认为是O(1); map是基于红黑树的结构,查询速度为O(logn)。 一般来说…

std::bitset访问效率

当bitset的长度小于64(8个字节)的时候,没有太大效率问题。但足够长的时候就需要考虑了,事实上,当长度大于64的时候会马上突显出来这个…

C++ decltype和auto

C++11开始改变了C++98中关键字auto的定义,使得C++可以在一些情况下不用写长长的变量类型,例如: std::vector<…

C++17递归获取一个目录下指定扩展名的所有文件

C++17加入了std::experimental::filesystem,这使得C++进行文件操作大为方便(当然,之前boost也是有类似…

C++BUG汇总

某个函数的重载无效 有可能是函数没有写对,建议像其它语言一样,在派生类的重载函数后面写上override关键字,确保正确重载。如: #inc…

C++返回多个值

#include <tuple> #include <iostream> std::tuple<int, do…

STL string用法汇总

#include <string> find std::size_t start_pos = str.find(from); i…