Получить итератор на i-ый элемент строки

110
17 сентября 2021, 07:50

Получить итератор на центральный элемент строки, не используя метод инкремента итератора на начало, то есть без:

auto iter=tempStr.begin();
while(*iter!=centerSymb) ++iter;
Answer 1

Похоже отвечать придется сразу на 3 вопроса. Потому что ваш заголовок, тело вопроса и код в примере говорят о 3 разных вещах.

Звголовок: Получить итератор на i-ый элемент строки

Наиболее универсальный способ:

auto it = std::next(str.begin(), i);

Для итераторов произволного доступа это эквивалентно str.begin() + i, для остальных for(std::ptrdiff_t pos = 0; pos < i; ++pos) ++it;.

Вопрос: Получить итератор на центральный элемент строки

auto it = std::next(str.begin(), str.size() / 2);

Код: Получить итератoр на некоторый символ

auto it = std::find(str.begin(), str.end(), symbol);
Answer 2
auto Iter = tempStr.begin() + tempStr.find(centerSymb);
READ ALSO
Сортировка (std::sort) по украинскому алфавиту

Сортировка (std::sort) по украинскому алфавиту

сделал сортировку по алфавиту для структур по первому элементуно украинские буквы і ї ґ выводяться вверху

234
С++. ofstream не записывает в файл

С++. ofstream не записывает в файл

Не записывает в файлМожет ли быть ошибка с правами доступа?если да, то как её решить?подскажите пожалуйста, try catch уже пробовала

106
C++, когда вызывается конструктор статичного объекта?

C++, когда вызывается конструктор статичного объекта?

Подскажите, пожалуйста, когда для статичного объекта в C++ вызывается конструктор?

120
ненужные файлы codeblocks

ненужные файлы codeblocks

в codeblocks при работе создается куча ненужных файлов вроде:

104