读书人

vector:iterator有关问题

发布时间: 2012-06-14 16:00:31 作者: rapoo

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().

读书人网 >C++

热点推荐