您好,欢迎访问宜昌市隼壹珍商贸有限公司
400 890 5375
当前位置: 主页std::function比函数指针更通用但非绝对更好:函数指针轻量零开销可内联,而std::function支持lambda、bind和成员函数但有类型擦除开销及潜在堆分配。
std::atomic是C++无锁编程核心工具,提供原子读写、CAS等操作,支持整型/指针等类型,需用load/store/exchange/compare_exchange等成员函数操作,不支持普通赋值和算术运算符。
基类析构函数不加virtual会导致资源泄漏,因为用基类指针delete派生类对象时仅调用基类析构,跳过派生类析构逻辑,使堆内存、文件句柄等无法释放;只要存在多态删除可能(如基类被继承或用于智能指针),就必须声明为virtual,否则引发隐蔽泄漏。
std::thread::hardware_concurrency()返回系统逻辑处理器数量的估计值,通常为硬件线程数(如4核8线程CPU返回8),可能为0,不保证精确且不区分物理与逻辑核心。
std::list是双向链表,不支持随机访问和下标操作,仅通过迭代器、front/back访问;插入删除为O(1)(需有效迭代器),splice实现零拷贝节点转移,迭代器仅在所指节点被erase时失效。
const管可变性,static管存储期与链接属性;二者维度不同,可共存但不可互替,如staticconst仅表示静态存储+只读,非编译期常量。
bitset是C++编译期定长位容器,支持位运算、下标访问、字符串转换等;声明需常量大小,提供set/reset/flip/count/any等成员函数及&|~等运算符。
std::source_location是C++20引入的运行时源位置工具,提供file_name()、line()、column()、function_name()四个成员获取调用点文件名、行号、列号和函数名,默认参数方式自动注入,开销极小。
Windows用LoadLibrary/GetProcAddress、Linux/macOS用dlopen/dlsym加载动态库;需注意路径、导出声明、函数签名匹配、错误检查及资源释放。
multimap是C++STL中允许键重复的关联容器,基于红黑树实现,元素按键有序存储,支持O(logn)的插入、删除与查找。1.特性:支持重复键、自动排序、不可用下标访问。2.操作:通过insert或emplace插入;find、count和equal_range处理查找;erase删除元素;迭代器遍历。3.可自定义...
优先用std::string;仅系统层、嵌入式或性能敏感且字符串极简单时谨慎用char。std::string自动内存管理、操作安全便捷,char易越界泄漏,需手动控制生命周期,仅在对接C接口等必要场景协作使用。
priority_queue是STL中基于堆实现的容器适配器,默认为大顶堆,可通过greater或自定义比较器实现小顶堆或结构体排序,常用于Dijkstra、任务调度等场景。