У меня есть новый класс Seq, который наследует вектор и имеет некоторые дополнительные функции. Я могу использовать все методы вектора с Seq.
Имея такую структуру данных:
Seq< vector<int> > sweepEvents;
Я хочу иметь функцию, которая выполняет поиск края вектора элемента в sweepEvents
и возвращает итератор в положение найденного элемента в sweepEvents
(если и только если найден edge
) и итератор до последних элементов вектора (если и только если edge
не найден).
Затем я хочу работать с этим итератором, в котором я хочу сравнить элементы из prev и следующей позиции итератора.
У меня есть следующая функция для поиска и возврата итератора:
Seq< vector<int> >::iterator QSweep::insertSweepEvents(edge_t edge,int currentDim){
int changePosition;
int found=0;
for (int i=0;i<currentDim;i++){
if (edge[0]==sweepEvents[i][1]){
changePosition=i;
found=1;
return sweepEvents.begin()+changePosition;
}
}
if (found==1){
sweepEvents.rep().insert(sweepEvents.begin()+changePosition,edge);
sweepEvents.rep().erase(sweepEvents.begin()+changePosition+1);
}
else{
sweepEvents.rep().insert(sweepEvents.end(),edge);
}
return sweepEvents.end()-1;
}
Затем я вызываю этот итератор в главной функции. Я на самом деле пытался, но он не компилируется, и я не знаю, какой синтаксис использовать, кроме этого:
int main(){
Seq< vector<int> > sweepEvents;
vector<int> edge;
//.....initialize sweepEvents and edge
//declare iterator but not working
Seq< vector<int> >::iterator comparePosition;
//not working neither
comparePosition=insertSweepEvents(edge,sweepEvents.size());
}
Есть идеи, как правильно вызывать итератор? Я вижу, это не работает как целочисленный индекс из массива?