私はベクトルを継承し、いくつかの追加機能を持つこの新しいクラスSeqを持っています。私はSeqとベクトルのすべてのメソッドを使用することができます。私はsweepEvents
にそれのための要素ベクトルのエッジ探索を取り、sweepEvents
で見つかった要素の位置にイテレータを返す関数を持つようにしたいベクトルのイテレータを返す関数
Seq< vector<int> > sweepEvents;
(のみの場合と:このデータ構造を有する
edge
が見つかった場合)、ベクトルの最後の要素に対するイテレータ(edge
が見つからない場合のみ)。
次に、イテレータの前の位置と次の位置から要素を比較したいという点で、このイテレータを使用したいと思います。
私はイテレータを創設し、返すための以下の機能を持っている:
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());
}
私が正しくイテレータを呼び出す必要があります方法上の任意のアイデア?私はそれが配列から整数インデックスとして動作しない参照してください?
を返すときにのみ設定されている変数を使用しています「働かない」という意味ですか?悪い結果、コンパイラエラー、コア? – bayda
comparePositionの定義とその後のcomparePositionの割り当てのコンパイラエラー。 – madalina
find = 1を設定したときに戻るので、if(found == 1)ブロックは実行されません。 コンパイラのエラーはどのコンパイラで取得できますか? – mentat