使用vector需小心
来源:互联网 发布:linux gcc -o 编辑:程序博客网 时间:2024/05/17 19:17
typedef struct tag_ShotInfo
{
char dir[1024];
bool bName;
char name[64];
bool bChan;
}ShotInfo;
typedef vector<ShotInfo> ShotInfo_Vector;
CTreeCtrl m_treeCtrl; // 树控件
ShotInfo_Vector m_Vector; // 这里假设已经存在一些数据
ShotInfo* pInfo = NULL;
ShotInfo_Vector::iterator pi;
for (pi = m_Vector.begin(); pi != m_Vector.end(); pi++)
{
pInfo = (ShotInfo*)pi;
m_TreeCtrl.SetItemData(hItem, (DWORD)pInfo); // 为树项绑定指针地址
}
到目前为止,程序没有任何问题
但是这时我如果往m_Vector里再增加一个数据
问题就出现了
pInfo = (ShotInfo*)m_TreeCtrl.GetItemData(hItem);
取到的指针对应不到实际数据
======================================================
vector对压入的栈数据会进行管理,当压入项发生变化时,其他
已存在的项指针也可能发生变化,使用在使用迭代器指针时需要小心
======================================================
针对上述问题
建议typedef vector<ShotInfo*> ShotInfo_Vector;
压入堆数据,即可避免此类问题
=======================================================
欢迎批评指正
- 使用vector需小心
- vector使用erase()需要小心。。。。。。。
- 使用atof需小心
- android.os.Debug.waitForDebugger()使用需小心
- 小心std::vector的一个错误用法!
- 小心身份证复印件的使用
- ASM:小心使用std
- Javascript:小心使用innerHTML
- strlen使用要小心
- 小心使用_bstr_t类
- 小心使用编码格式
- base href小心使用
- 使用memset要小心
- 小心使用memcpy函数
- 小心使用@@identity
- 小心使用BufferedStream
- 小心使用ajaxpro吧!
- 小心使用new
- ARM VFP
- 关于指针的非法转换以及网络通信的注意点
- 软件发布了如何跟踪异常错误
- Redhat Linux NFS配置
- ecside 数据库分页
- 使用vector需小心
- 页面上弹出“消息提示框”的cs
- 嵌入式Liux:ffmpeg+ffserver实现音视频通讯
- 内存链与内存泄漏检测机制
- Win32汇编程序结构
- sizeof()使用请注意类型隐式转换问题
- [求助]FH35板子时间问题
- workflow 关注什么
- MFC ActiveX 控件在IE下闪烁的问题