- 博客(11)
- 收藏
- 关注
原创 M1芯片Mac配置vscode + cmake
最近一直想自学一下cmake的一些知识,正好记录一下M1芯片的mac配置vscode+cmake的一个flow。
2024-11-09 18:55:16
487
原创 NDEBUG宏和assert()
在coding的过程中还是要尽可能的多加一些assert()来方便coder定位问题,但是当release的时候一般会加上NDEBUG宏来关闭assert,防止对使用者不友好。所以在使用assert的时候要考虑这个问题,防止添加NDEBUG宏后导致结果不稳定。
2024-09-06 13:56:27
220
原创 stl容器遍历中增删元素对迭代器的影响
在以上代码中,如果是插入元素,则可能不会影响已存在的元素的迭代器,因为push_back或者emplace_back的做法是将终止迭代器指向新插入的元素,但是这样思考并没有考虑vector的容量。若vector的容量不够的话,则会为vector开辟一个原来容量两倍的新的内存,并把数据迁移到新的内存地址,这样一来就会导致原有迭代器失效,便会发生未定义的行为。map或set: 在遍历的过程中删除元素可能会导致迭代器失效,若在遍历的过程中添加元素,则可能会打乱原有顺序,导致迭代器位置失效。
2024-05-14 19:10:51
318
2
原创 算法泛化过程(摘自STL源码剖析)
有时存在一些比较底层且常用的算法,这些算法需要被复用,并且应该独立于特定的容器(其实这这也是STL中算法的思想)
2024-01-17 09:05:43
480
原创 vector<bool>
vector本质上并不是一个STL容器,他底层通过位压缩技术,将每个bool值压缩为1位来进行存储,以减小向量对象的内存占用。
2024-01-15 19:32:24
1548
1
原创 emplace_back和push_back的异同
虽然在性能方面emplace_back优于push_back,但emplace_back也有一些缺点:1. emplace_back一般发生错误都会在比较深的位置,而push_back则更容易定位问题2. push_back是函数,可以支持隐式转换,而emplace_back本质上是模板,不支持隐式转换。
2024-01-12 19:21:35
1632
1
原创 C++智能指针
最初,c++98首先引入了auto_ptr, 在接下来的c++11中又引入了unique_ptr, shared_ptr以及weak_ptr。
2024-01-11 20:29:14
991
1
原创 c++中各种类的继承关系
虚公有继承主要用于解决菱形继承问题,在菱形继承的子类中只会保存一份父类的副本,可以解决菱形继承带来的内存浪费和二义性问题(非必要不要使用菱形继承结构)。基类中的公有成员在子类中仍然是公有成员,保护成员在子类中是保护成员,私有成员在子类中不可访问。基类的公有和保护成员在子类中变为私有成员,基类的私有成员在子类中不可访问。基类的公有和保护成员在子类中变为保护成员,私有成员在子类中不可访问。
2024-01-11 17:52:55
389
3
原创 c++中const限定符的使用
1. const T* v,此时2. T* const v, 此时3. const T* const c, 此时。
2024-01-10 17:46:15
389
3
原创 c++编译选项含义(更新中)
O1: 这是一个较低的优化级别,它启用了一些基本的代码优化技术,如删除未使用的变量、简化常量表达式、内联简短函数等。-Wextra: 表示开启额外的警告信息,与-Wall不同,该选项提供了更多的警告选项,包括了一些非常细微的问题。O3: 这是一个更高的优化级别,它可能使用更复杂的优化技术,如向量化、循环变量优化、函数分析等。-rapth=: 用于连接动态库,在程序运行时指定动态库的搜索路径(有时所需lib不在环境变量中又不想配置时,可以使用该选项来指定)。-L : 添加库文件的搜索路径。
2024-01-08 09:19:08
689
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人