
工作中的c++
文章平均质量分 80
工作过程中遇到的c++知识
CZ一星弱火
C++GOGOGO!
展开
-
阅读项目代码中遇到的问题解释(持续更新)
通用的做法,可以直接用emplace操作,判断指定的key是否存在,如果不存在,则插入元素,当元素存在的时候,emplace依然会构造一次带待插入元素,判断不需要插入后,将该元素析构,这样导致的后果是,产生了多余的构造和析构操作。中,元素的key是唯一的,我们经常遇到这样的场景,向map中插入元素时,先检测map指定的key是否存在,不存在时才做插入操作,如果存在,直接取出来使用,或者key不存在时,做插入操作,存在时做更新操作。类型的变量要么是一个T类型的变量,要么是一个表示“什么都没有”的状态。原创 2023-04-15 22:28:36 · 554 阅读 · 0 评论 -
【C++】bool数组排序方法总结
一般来说,如果对性能要求不太高,或者数据量较小,可以选择std::sort或。如果对性能要求较高,并且需要保持原有元素的相对顺序,可以选择双指针法。如果对性能要求非常高,并且不需要保持元素顺序,可以选择位操作法。而如果数据量足够大,并且对性能要求极致,可以考虑使用SIMD指令集实现排序。原创 2024-03-19 20:28:32 · 711 阅读 · 1 评论 -
【c++debug】模板结构体的函数定义写在头文件中可能导致的多重定义错误(multiple definition)
当包含头文件的源文件被编译时,编译器会将模板结构体的函数定义实例化为具体的函数,并生成相应的目标代码。如果多个源文件都包含了这个头文件,并且它们都被编译为目标文件,那么链接器在链接这些目标文件时就会遇到多个相同函数定义的情况,从而导致多重定义错误。在C++中,如果将模板结构体的函数定义写在头文件中,而且这个头文件被多个源文件包含,可能会导致多重定义错误(multiple definition)。这样,每个源文件只会编译并实例化一次模板结构体的函数,避免了多重定义错误。关键字修饰这些函数的定义。原创 2023-05-27 23:17:30 · 985 阅读 · 0 评论 -
【C++】std::move用法详解 - 移动语义的艺术
当设计自己的类时,确保正确实现了移动构造函数和移动赋值运算符。原创 2023-12-06 21:26:18 · 5899 阅读 · 2 评论 -
【并行计算】tbb::parallel c++并行计算的用法总结
tbb::parallel_for用于在并行环境下进行循环迭代。它可以将一个循环任务划分为多个子任务,并在多个线程上并行执行这些子任务,从而提高程序的并行性和性能。原创 2023-07-18 11:58:40 · 5071 阅读 · 4 评论