C++ перебирает итераторC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 C++ перебирает итератор

Сообщение Anonymous »

В настоящее время я «модернизирую» свой код игрушечного компилятора, чтобы использовать как можно больше функций C++11 и научиться писать на современном C++. Просматривая свой код в поисках вещей, которые можно модернизировать, я нашел эту конструкцию:

Код: Выделить всё

for (size_t i = 0; i < _vector.size(); i++) {
for (size_t j = 0; j < _vector[i].length(); j++) {
_vector — это std::vector, содержащий исходный код файла, который необходимо скомпилировать. Каждый std::string в векторе представляет собой строку кода, которую необходимо скомпилировать. Перед компиляцией компилятор проверяет, есть ли в компилируемом коде какие-либо синтаксические ошибки, и первым шагом этой проверки является поиск пропущенных точек с запятой. Я делаю это, просматривая каждый символ один за другим и проверяя, является ли указанный символ точкой с запятой. Если да, я проверяю, нужна ли точка с запятой, строя своего рода мини-синтаксическое дерево и тем самым определяя, нужна ли она. В настоящее время я получаю доступ к каждому символу с помощью _vector[j], который очень напоминает ANSI-C (именно так вы получаете доступ к каждому символу в массиве char*), и я хочу заменить это итераторами. Насколько я знаю, итератор — это конструкция, подобная указателю, которая указывает на элемент в контейнере/последовательности/что угодно. Применяя аналогию с указателем, я пришел к выводу, что std::vector::iterator указывает на строку в векторе, поэтому теоретический std::vector::iterator: :iterator будет указывать на один символ в строковом объекте. Но поскольку в STL такого нет, аналогия с указателем здесь бесполезна. Итак, мой вопрос: как мне получить доступ к каждому символу внутри std::vector::iterator?

Подробнее здесь: https://stackoverflow.com/questions/321 ... r-iterator
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»