std::inner_product与std::accumulate初始值设置踩坑
std::forward_list与std::advance
如何使用std::function 和std::bind取代继承
std::move_iterator、make_move_iterator
智能指针小技巧
如果这几种智能指针是对象x的数据成员,而它的模板参数T是个incomplete类型,那么x的析构函数不能是默认的或内联的,必须在.cpp文件里边显式定义,否则会有编译错或运行错
std::dynamic_pointer_cast转换shared_ptr
- 二进制字面量:可以使用0b或0B前缀表示二进制数,例如0b1010表示十进制数10。
- 泛型lambda表达式:可以使用auto关键字作为lambda表达式的参数类型,使得lambda表达式更加通用和灵活。
- 返回类型推导:可以使用auto关键字作为函数返回类型,使得函数的返回类型可以根据返回值自动推导。
- 初始化列表的改进:可以使用{}初始化列表进行列表初始化,支持更多的初始化方式和类型推导。
- constexpr函数的改进:可以在constexpr函数中使用if语句和循环语句,使得constexpr函数更加灵活和通用。
- 变长模板参数:可以使用template<typename... Args>语法定义变长模板参数,使得模板更加通用和灵活。
- std::make_unique函数:可以使用std::make_unique函数创建unique_ptr智能指针,避免了手动管理内存的麻烦。
- std::quoted函数:可以使用std::quoted函数对字符串进行转义和引号处理,使得字符串更加安全和可靠。
#include <iostream>
#include <string>
#include <iomanip>
int main()
{
std::string str = "Hello World";
std::cout<<str<<std::endl;
std::cout<< std::quoted(str)<<std::endl;
}
#include <iostream>
#include <string>
#include <iomanip>
int main()
{
std::string str = "Hello World";
std::cout<<str<<std::endl;
std::cout<< std::quoted(str)<<std::endl;
}
No comments yet.