У меня есть простой код ниже:
#include <iostream>
#include <list>
#include <iterator>
using namespace std;
int main()
{
list<int> ints = { 3, 6, 1, 5, 8 };
int index;
index = 2;
std::list<int>::iterator it = ints.begin() + index;
cout << "Element at index " << index << " is " << *it << '\n';
return 0;
}
При компиляции , он говорит:
ошибка: нет соответствия для оператора + (операнд типы: 'std :: __ cxx11 :: list :: iterator' {aka 'std :: _ List_iterator'} и 'int')
std :: list :: iterator it = ints.begin () + index;
~~~~~~~~~~~~~ ^ ~~~~~~
Я понимаю, что пытается сказать компилятор, но я не уверен, как его решить , Как мне преобразовать int
в iterator
и получить элемент по этому индексу? Я искал похожие вопросы, но большинство из них ищут конверсию в противоположном направлении, что можно сделать с помощью std::distance
, а остальные были для разных контейнеров.
Спасибо за ваш помощь!