自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 stl容器遍历中增删元素对迭代器的影响

在以上代码中,如果是插入元素,则可能不会影响已存在的元素的迭代器,因为push_back或者emplace_back的做法是将终止迭代器指向新插入的元素,但是这样思考并没有考虑vector的容量。若vector的容量不够的话,则会为vector开辟一个原来容量两倍的新的内存,并把数据迁移到新的内存地址,这样一来就会导致原有迭代器失效,便会发生未定义的行为。map或set: 在遍历的过程中删除元素可能会导致迭代器失效,若在遍历的过程中添加元素,则可能会打乱原有顺序,导致迭代器位置失效。

2024-05-14 19:10:51 224 2

原创 算法泛化过程(摘自STL源码剖析)

有时存在一些比较底层且常用的算法,这些算法需要被复用,并且应该独立于特定的容器(其实这这也是STL中算法的思想)

2024-01-17 09:05:43 401

原创 vector<bool>

vector本质上并不是一个STL容器,他底层通过位压缩技术,将每个bool值压缩为1位来进行存储,以减小向量对象的内存占用。

2024-01-15 19:32:24 1050 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 1244 1

原创 C++智能指针

最初,c++98首先引入了auto_ptr, 在接下来的c++11中又引入了unique_ptr, shared_ptr以及weak_ptr。

2024-01-11 20:29:14 939 1

原创 c++中各种类的继承关系

虚公有继承主要用于解决菱形继承问题,在菱形继承的子类中只会保存一份父类的副本,可以解决菱形继承带来的内存浪费和二义性问题(非必要不要使用菱形继承结构)。基类中的公有成员在子类中仍然是公有成员,保护成员在子类中是保护成员,私有成员在子类中不可访问。基类的公有和保护成员在子类中变为私有成员,基类的私有成员在子类中不可访问。基类的公有和保护成员在子类中变为保护成员,私有成员在子类中不可访问。

2024-01-11 17:52:55 354 2

原创 c++中const限定符的使用

1. const T* v,此时2. T* const v, 此时3. const T* const c, 此时。

2024-01-10 17:46:15 363 2

原创 c++编译选项含义(更新中)

O1: 这是一个较低的优化级别,它启用了一些基本的代码优化技术,如删除未使用的变量、简化常量表达式、内联简短函数等。-Wextra: 表示开启额外的警告信息,与-Wall不同,该选项提供了更多的警告选项,包括了一些非常细微的问题。O3: 这是一个更高的优化级别,它可能使用更复杂的优化技术,如向量化、循环变量优化、函数分析等。-rapth=: 用于连接动态库,在程序运行时指定动态库的搜索路径(有时所需lib不在环境变量中又不想配置时,可以使用该选项来指定)。-L : 添加库文件的搜索路径。

2024-01-08 09:19:08 498

原创 LeetCode每日一刷 2427

算法每日一刷

2023-04-05 22:44:21 61

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除