
特化
reserve只改变capacity不改变size;调用后不能通过下标访问新预留位置,否则越界;resize(n,val)才真正增加size并允许安全访问[0,n)下标。
选std::set还是std::unordered_set,核心看是否需要有序及对操作性能的敏感度:std::set基于红黑树,支持有序遍历、区间查询和双向迭代,时间复杂度O(logn);std::u...
标准C无vector因其属C++核心类型;C中vector实为宏/结构体封装的动态数组,依赖realloc扩容,需手动管理内存与生命周期。
cereal更轻量、头文件即用,Boost功能全但需编译;核心是为类定义serialize函数并选择对应归档类型(JSON/二进制/XML)执行序列化与反序列化。
正确定义和使用自定义命名空间需遵循作用域规则:用namespacename{...}定义,通过::访问成员或using引入;C++11支持a::b::c嵌套写法;避免头文件中usingnamespac...
std::numeric_limits是C++标准库中定义在中的模板类,用于类型安全地获取任意数值类型的极值;它比INT_MAX等宏更通用,支持自定义类型和编译期计算。
std::any只能存储可复制或可移动的类型,不支持void、抽象类、C风格数组、引用及无拷贝/移动构造函数的类型;支持int、std::string等满足要求的类型。
折叠表达式是C++17引入的语法糖,用于简化可变参数模板中对所有参数执行相同操作(如打印、求和、逻辑运算),避免冗长递归;它分左右折叠,影响有副作用操作的顺序,但纯数学运算通常无差别。
现代C++中using是定义类型别名的首选方式,因其语法直观、支持模板别名、统一风格且兼容性良好;typedef虽等效但表达力弱、不支持模板别名、阅读性差。
Zero-CostAbstractions是C++核心设计哲学,即未使用的抽象不产生任何运行时开销,已使用的抽象经优化后性能等同手写汇编;其依托模板实例化、constexpr、静态绑定与RAII等机制...