多线程函数传参慎用引用

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

shared_ptr改成unique_ptr导致编译不过

如果一个类的属性包括unique_ptr,那么它的默认拷贝构造函数就是delete了的,需要手动写,具体是把这个unique_ptr拷贝还是…

std::swap

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

unordered_map不一定比map快

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

C++ decltype和auto

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

C++返回多个值

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

GCC ERRORS

GCC error: declaration of … shadows a parameter 函数中定义和函数参数相同(名字和类型完全相同…

智能指针

Boost智能指针 智能指针最早在boost中提出,直到C++11才被正式引入std库。 因此智能智能存在两种,一种是boost命名空间的,…

C++ lambda表达式(匿名函数)

C++ 11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda的语法形式如下: [函数对象参数] (操作符重载…