条款42:考虑使用置入(emplace)代替插入(insert)
使用 emplace 代替 insert 可避免临时对象构造,直接在容器内构造元素,提升性能,特别是构造成本较高时。
使用 emplace 代替 insert 可避免临时对象构造,直接在容器内构造元素,提升性能,特别是构造成本较高时。
对移动代价低、总是被拷贝的参数,按值传递更简洁高效,能统一处理左值与右值,避免重复代码和不必要的复制。
Lambda语法清晰直观,支持内联优化;std::bind语义复杂、可读性差,除特殊场景外应避免使用。
泛型lambda中,用decltype获取形参类型,配合std::forward实现完美转发,保持参数左/右值属性。
通过初始化捕获,可将可移动对象(如unique_ptr)安全高效地移动进lambda闭包,避免拷贝开销。
默认捕获容易引发潜在悬挂指针或捕获不明确,安全性和代码可读性差,应显式指定捕获。
C++返回值优化(RVO)是编译器直接在调用者内存构造返回对象,避免拷贝或移动,提高性能的优化技术。
花括号初始化、重载函数名、位域、静态常量未定义等会导致失败。
移动可能不可用或效率低,需注意noexcept声明和类型支持。
多层引用合并,规则如 & + && → &,防止产生非法引用类型。