首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

vector:iterator有关问题

2012-06-14 
vector::iterator问题别人写的程序我从windows移植到linux下,碰到一个vector的问题一直编译不过vectorSTU

vector::iterator问题
别人写的程序我从windows移植到linux下,碰到一个vector的问题一直编译不过
vector<STU_STOCK *>::iterator pStockPos = (vector<STU_STOCK *>::iterator)nStockPos;
STU_STOCK是结构体,nStockPos是long类型
linux下g++编译的时候报错:
error: invalid conversion from 'long int' to 'STU_STOCK**'
看不明白这句话是什么意思,请高手指点下
注:在windows下能编译

[解决办法]
有些版本的STL,vector的迭代器是指针。有些版本的不是。
[解决办法]
其实这些STL实现的版本不同,实现的方式也有差别的。
[解决办法]
iterator本身不是指针,但它重载了*和->操作符,很多情况下可以像个指针一样使用。

不过还有直接就把iterator定义成一个指针的实现方式吗?我没见过......
[解决办法]
vector::iterator不是指针,它们完全是两码事。nStockPos的类型是long int,你把一个long int强制转型成一个人vector::iterator完全是不符合规范的。即便是把一个long int强制转型成STU_STOCK *也是不合理的。既然lz用迭代器,那么就用迭代器来初始化它,比如vector<STU_STOCK>::begin().

热点排行