<分区>
我需要编写一个函数,从 vector 中删除接收到的元素。 我认为这样做的方法是解析 vector 并将迭代器与传递的引用进行比较。问题是我无法将类型迭代器与类型对象引用进行比较...
低于实际代码(编辑:最初我发布了一个简化得多的版本)
struct BufferPoint{int x; int y; float pressure; };
class QueueState
{
public:
VectorCurve *curveVector;
RasterCurve *curveRaster;
vector<BufferPoint> *curveBuffer;
QueueState(vector<BufferPoint> *_b, VectorCurve *_v, RasterCurve *_r){ curveBuffer= _b; curveVector = _v; curveRaster = _r;};
};
vector<vector<BufferPoint>> queueBuffers;
vector<QueueState> queueStates;
[...]
// FIND AND REMOVE A BUFFER OBJECT
for(std::vector<QueueState>::iterator it = queueStates.begin(); it != queueStates.end(); ++it)
{
//Remove buffer from pool (queue)
//////////////////////////////////////////////////////////////////////////
if((it->curveVector->state == CURVEDATA_STATE_FINISHED) & (it->curveRaster->state == CURVEDATA_STATE_FINISHED))
{
queueBuffers.erase(std::find(queueBuffers.begin(), queueBuffers.end(), *(it->curveBuffer))); // <-- THIS DOESNT WORK. CHECK BELOW FOR ERROR MESSAGE (1)
queueStates.erase(it);
}
//////////////////////////////////////////////////////////////////////////
}
(1) 这是我从编译器得到的消息:
Error error C2678: binary '==' : no operator found which takes a left-hand operand of type 'const BufferPoint' (or there is no acceptable conversion) c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility 2956