
STL_了解
6大组件 容器 vector list deque set map 从实现的角度,STL容器是class template 算法 sort search copy ... 从实现的角度,STL算法是function template 迭代器 容器与算法之间的“胶合剂” 所谓的“泛...
6大组件 容器 vector list deque set map 从实现的角度,STL容器是class template 算法 sort search copy ... 从实现的角度,STL算法是function template 迭代器 容器与算法之间的“胶合剂” 所谓的“泛...
关于 #include <string> //C++ #include <string.h> //C using namespaces std; 声明 string str; 调用string的默认构造函数,str被初始化为空串 构造 string s(s...
导读 explicit 将构造函数声明为explicit,禁止编译器执行非预期(不是我们想要的)的类型转换。 除非我们有一个很好的理由,允许构造函数被用来进行隐式类型转换,否则我们应该把它声明为explicit的。 拷贝构造函数&&拷贝赋值操作符 拷贝构造函数被用...
静态断言 相关介绍: 预处理宏assert()在标准库头文件cassert中定义。 它可以在程序中测试逻辑表达式。 只要条件(表达式)是false,assert()宏就会调用std::abort(),终止程序。 另外assert()会在标准错误流cerr中显示结果。 静态断言 静...
运算符 符号 非成员 二元算术运算符 + - * / % 是 一元算术运算符 + - 是 按位运算符 ~ & | ^ << >> 是 逻辑运算符 ! && || 是 赋值运算符 = 否 复合赋值运算符 += -= *= /= %= ...
auto用于初始化列表 上述代码,在C++17之前,对于m的类型的推断,编译器给出的结果将不会是我们的预期的。 它会推断为std::initializer_list<int>,而不是int。 同样,下面的代码也是会被推断为std::initializer_list&l...
优先级 运算符 相关性 1 :: 左 2 ()、[]、->、 . 左 2 后缀++、后缀-- 左 3 !、 ~ 右 3 一元+、一元- 右 3 前缀++、前缀-- 右 3 寻址&、间接* 右 3 C风格的强制类型转换() 右 3 sizeof 右 3 new、new...
组块分隔符 C++14新增了用单引号表示的组块分隔符。 使用这种语法,可以提高代码的可读性。 二进制字面量 从C++14起,我们可以使用二进制字面量 auto用于推断函数 auto可以被使用来让编译器根据赋值给变量的初始值来推断变量的类型 从C++14起,auto也适用于函数。具...
标准库tuple类模板 tuple是类似pair的模板。 每个pair的成员类型都不相同,但每个pair都恰好有两个成员。 不同tuple类型的成员类型也不相同,但是一个tuple可以有任意数量的成员。 每个确定的tuple类型的成员数目是固定的,但一个tuple类型的成员数目可...
function类模板 C++语言中有几种可调用的对象:函数、函数指针、lambda表达式、bind创建的对象以及重载了函数调用运算符的类。 和其他对象一样,这些可调用的对象,也有自己的类型。 然而,两个不同的可调用对象,却有可能共享同一种调用形式。(调用形式指明了调用返回的类型...