std中的坑
文章平均质量分 56
qq_35644837
这个作者很懒,什么都没留下…
展开
-
stl容器遍历中增删元素对迭代器的影响
在以上代码中,如果是插入元素,则可能不会影响已存在的元素的迭代器,因为push_back或者emplace_back的做法是将终止迭代器指向新插入的元素,但是这样思考并没有考虑vector的容量。若vector的容量不够的话,则会为vector开辟一个原来容量两倍的新的内存,并把数据迁移到新的内存地址,这样一来就会导致原有迭代器失效,便会发生未定义的行为。map或set: 在遍历的过程中删除元素可能会导致迭代器失效,若在遍历的过程中添加元素,则可能会打乱原有顺序,导致迭代器位置失效。原创 2024-05-14 19:10:51 · 249 阅读 · 2 评论 -
vector<bool>
vector本质上并不是一个STL容器,他底层通过位压缩技术,将每个bool值压缩为1位来进行存储,以减小向量对象的内存占用。原创 2024-01-15 19:32:24 · 1186 阅读 · 1 评论