2017-09-19 8 views
0

イテレータで次の問題に遭遇したことはありません。私が持っている、次の私は、右の前に並び替えさLIST「StringOfPearls」:C++:std :: advance(once)がリストの最後に移動

DNAr = StringOfPearls->begin(); // Added 1 element to the beginning of this list in earlier line of code 
cout << "pos DNAr before bumping by 1: " << distance(DNAreplicase, StringOfPearls->begin()) << endl; 
advance(DNAreplicase, 1); 
cout << "pos DNAr after bumping by 1: " << distance(DNAreplicase, StringOfPearls->begin()) << endl; 

戻り値:

pos DNAr before bumping by 1: 0 
pos DNAr after bumping by 1: 10 

私は愚かな何かが欠けてる間違いなく、しかし誰も私を助けることができますか?

+4

[mcve]を表示してください。コードから、 'DNAreplicase'が' StringOfPearls'のイテレータであるかどうかはわかりません。 – user463035818

+0

'DNAreplicase'はどこで初期化されていますか? –

答えて

0

は正しく使用されていません。 beginイテレータは最初の引数です。

distance(StringOfPearls->begin(), DNAreplicase) 

これは、範囲を示すイテレータのペアをとるすべての関数の規約です。

+1

C++ 11のアップデート:_ "ランダムアクセスイテレータが使用され、最初から最後から到達可能な場合、値は負の値になる可能性があります。" _ source:http://en.cppreference.com/w/cpp/iterator/distance –

関連する問題