对项目中iterator的问题的解决办法
来源:互联网 发布:php addslashes() 编辑:程序博客网 时间:2024/05/01 03:55
今天,终于发现了解决昨天项目中遗留的list 的iterator遍历的问题。对该问题总结如下:
一、首先定义
//定义数据结构
typedef struct COMPUTER_INFO {
CString Name;
CString Type;
CString Number;
CString ORValue;
CString BeginDate;
CString Year;
CString Dep;
CString FromCom;
CString RepareRec;
BOOL Remove;
bool operator == ( COMPUTER_INFO c ) { return c.Number==Number ; }
}COMPUTER_INFO;
typedef list< COMPUTER_INFO > COMPUTER_INFO_LIST;
二、使用问题
举其中一个FindResource函数说明:
/**************************************************/
函数:FindResource
用途:根据计算机编号查找该计算机对应的详细信息
参数:CString Name //计算机帐号
返回:COMPUTER_INFO* //计算机信息
/**************************************************/
COMPUTER_INFO * CComputerResourceDlg::FindResource( CString number)
{
//&*v.begin(),
try {
COMPUTER_INFO* I;
COMPUTER_INFO_LIST::iterator pbi;
for( pbi = m_Computer.begin() ; pbi != m_Computer.end() ; pbi++ ) {
I = &*pbi;
if( 0==strcmp(number, I->Number) )
return (COMPUTER_INFO*)(&(*I));
}
}catch(...) {
}
return NULL;
}
函数中使用的COMPUTER_INFO_LIST::iterator pbi; 只是一个iterator,不能用于直接读取所遍历的数据项的值。两种解决办法:
1、(*pbi)->Number; 但是这个方法在我的vc6.0上没有通过,但同学说在gcc上没有问题。
2、I = &*pbi; 使用一个 COMPUTER_INFO* I;来取得指针,这个方法在vc6.0上通过。
所以,如果要得到list中数据项的指针,需要转换I = &*pbi。
问题解决!
- 对项目中iterator的问题的解决办法
- STRUTS2中iterator标签的问题
- C++中iterator失效的问题
- 对数据库操作中遇到的问题及解决办法
- 项目中乱序问题的解决办法
- PB中关于动态工资项目问题的解决办法
- YII框架开发项目中遇到的问题及解决办法
- java项目中遇到的问题及解决办法001
- java项目中遇到的问题及解决办法002
- 实际项目开发中遇到的问题及解决办法
- 项目开发中遇到的问题及解决办法
- 畅销书对Java中Iterator的理解误区
- 关于iterator的问题
- Hibernate Iterator的问题
- JAVA中iterator与add的顺序问题
- java中Iterator遍历时的删除问题
- C++自定义模板类中STL iterator未定义的问题
- struts2 iterator遍历的问题
- 转贴:MPEG4视频压缩编码技术详解
- 梦与足球
- Mule 架构中的几个名次的解释
- Spread控件的CellType
- Create为什么可以为虚函数?
- 对项目中iterator的问题的解决办法
- WebBrowser、MSHTML在Delphi中的使用
- 对论坛中有关数据类型转换的整理(ZZ)
- Spread分页显示设置
- CString 操作指南(ZZ)
- 权限系统概要
- 重读抗战诗歌
- 我的程序(2):c源码统计器
- 查找出关联数据库中所有包含某个字段的表的表名