Ниже приведена простая программа для печати позиции внутри вектора небольшого диапазона значений int.C++ forward iterator arithmetic
int mynumbers [] = { 3, 9, 0, 2, 1, 4, 5 };
vector<int> v (mynumbers, mynumbers + 7);
int m1[] = {9, 0, 2 };
vector<int>::iterator it = find_end (v.begin(), v.end(), m1, m1+3);
if (it != v.end())
cout << "Found at position: " << it-v.begin() << endl;//LINE I
Программа, как ожидается, печатает
Найдено в позиции: 1
функция возвращает find_end вперед итератора. Логически это не имеет никакого смысла для меня, чтобы сделать это, но когда я изменяю «ЛИНИЯ Я»
cout << "Found at position: " << it+v.begin() << endl;//LINE I
Я получаю ошибку компиляции. Я знаю, что я должен использовать «расстояние», однако я просто пытаюсь знакомиться с ограничениями различных типов итераторов
Благодаря
Что такое операция делать? –
Это не имеет смысла, и он не компилируется. Я бы назвал это победой. В чем проблема? Похоже, что вы спрашиваете, почему 'dos # & * $ #% ifosidfjsdo;' не компилируется. – chris
Почему вы используете как массив, так и std :: vector? –