listiterator — c ++: std :: advance (один раз) переходит в конец списка

Я никогда не рассматривал следующую проблему с итераторами, поэтому я действительно не знаю, где может начаться решение. У меня есть СПИСОК «StringOfPearls», который переставляется прямо перед тем, как я сделаю следующее:

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

Без сомнения, я просто скучаю по чему-то глупому, но кто-нибудь может мне помочь?

0

Решение

Вы не используете std::distance правильно. begin итератор является первым аргументом, например,

distance(StringOfPearls->begin(), DNAreplicase)

Это соглашение для всех функций, принимающих пары итераторов, обозначающих диапазон.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]