STL 迭代器失效和运算符重载容易错误问题

本文总结了使用C++ STL过程中的几个关键注意事项:迭代器失效的多种情况及预防措施;包含STL容器的结构体不可用memset初始化的原因;以及运算符重载时需特别注意的细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.一定要小心迭代器失效

1) 容器本身是空的,使用迭代器前,需要检验迭代器是否有效。

2) 容器本身增删失效,erase返回的是下一个迭代器,容器改变了插入删除了那么原来的迭代器就很容易失效。

3)容器存放的数据增删,容器内尽量存放的是结构体,而不是指针,存放指针很容易导致那块内存删掉了而变成存放的是野指针了。


2. STL结构体里面包含有 STL容器,那么不能使用memset来初始化


3.运算符重载要非常小心,需要考虑全面

小心二叉树类型容器排序查找用到的运算符<重载的写法,序列类型容器排序用到的<运算符重载,及其序列查找使用用std:find用到的==运算符重载。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值