С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/302: Рейтинг темы: голосов - 302, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 10.08.2018
Сообщений: 6

Что значит команда for (auto c:string)?

10.08.2018, 14:29. Показов 65333. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нигде не могу найти ответ, гугл выдаёт не то. Объясните что она делает, для чего она нужна и её более понятную запись.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.08.2018, 14:29
Ответы с готовыми решениями:

Margin:0 auto что значит?
Доброго времени суток! Не могу найти, что означает margin:0 auto. 0 это понятно, -нет полей, а 0 auto?

Что значит эта команда
на Raspberry Pi cp /tmp/install/lib/* /lib/ -R Разъясните новичку пожалуйста.

Что значит команда time
пример использования команды time: Код Bash $ cd /usr/include $ time -р grep _POSIX_SOURCE */*.h > /dev/null В книжке дан...

5
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
10.08.2018, 14:59
mr_smith3122, это range-based for - цикл for, основанный на диапазоне.
0
 Аватар для mvngr
225 / 189 / 98
Регистрация: 15.04.2018
Сообщений: 718
10.08.2018, 14:59
Лучший ответ Сообщение было отмечено mr_smith3122 как решение

Решение

Она эквивалентна записи
C++
1
for(auto c = string.begin(); c != string.end(); ++c)
Короткая запись, которую вы привели появилась в 11 стандарте
Она основана на итераторах, подробнее - гуглите.

Цикл проходит по всему массиву и выдает сам объект этого массива
т.е.
C++
1
2
3
4
    string s = "sdfgg";
 
    for(auto c : s)
        cout << c;
Выведет тебе все элементы из списка s. Он поочередно возьмет каждый элемент (символ) и выведет его

Лучше использовать слова const и ссылочный тип для оптимизации. Такая запись будет быстрее (в теории) работать:

C++
1
2
3
4
    string s = "sdfgg";
 
    for(const auto &c : s)
        cout << c;
Лично я его применяю в основном для обхода всего контейнера (вектор/лист/прочее) и взаимодействия с ним

[upd] gru74ik, удалите мою первую запись тут
2
Велосипедист...
 Аватар для Mournful Max
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
10.08.2018, 15:16
Цитата Сообщение от mvngr Посмотреть сообщение
Она эквивалентна записи
C++
1
for(auto c = string.begin(); c != string.end(); ++c)
Не-а ) Скорее так :
C++
1
2
3
4
5
6
7
8
9
10
11
{
    auto begin = string.begin() ;
    auto end   = string.end  () ;
    
    for ( ; begin != end ; ++begin )
    {
        _declarator = *begin ;
        
        statements...
    }
}
Где _declarator — переменная, которая стоит перед :.

Добавлено через 3 минуты
mvngr, Это я не прикопался. Важно понимать, что .begin() и .end() вызовутся лишь однажды — перед началом цикла. Исходя из этого, можно сделать вывод, что как-нибудь изменять размеры контейнеров не следует.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
10.08.2018, 18:46
mr_smith3122, по мне так более понятная запись это запись основанная на индексах, так как концепция индексов проще чем концепция итераторов.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <cstddef>
#include <iostream>
#include <vector>
 
int main()
{
    std::vector<int> vector {1, 2, 3};
 
    for (auto i : vector)
        std::cout << i << ' ';
 
    std::cout << std::endl;
 
    for (std::size_t i = 0; i < vector.size(); ++i)
        std::cout << vector[i] << ' ';
 
    std::cout << std::endl;
 
    for (std::vector<int>::iterator it = vector.begin();
         it != vector.end(); ++it)
            std::cout << *it << ' ';
 
    std::cout << std::endl;
 
    return 0;
}
0
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
10.08.2018, 22:27
Лучший ответ Сообщение было отмечено Kuzia domovenok как решение

Решение

C++
1
for(auto c = string.begin(), end = string.end(); c != end; ++c)
Добавлено через 1 минуту
Цитата Сообщение от _stanislav Посмотреть сообщение
mr_smith3122, по мне так более понятная запись это запись основанная на индексах, так как концепция индексов проще чем концепция итераторов.
Запись на индексах в шаблон не засунешь)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.08.2018, 22:27
Помогаю со студенческими работами здесь

Что значит public string T и все что дальше в приведенном коде?
class String { private string A; public String() { } public string T { ...

Что значит string s;
string s; это определение строки? какая для неё нужна библиотека? для чего нужны эти библиотеки: #include&lt;stdlib.h&gt; ...

String^ что этот оператор значит?
Скажите пожалуйста, что значит эта птичка? Вот например String^ IntList::Show() { String^ s=&quot;&quot;; LI current =...

Что значит строка string[] str_arr?
Что значит строка string str_arr?

String.count(a[i]) Не могу понять что значит
Просматривая решения с олимпиад наткнулся на такой код. Вот такое задание: Поликарп — большой любитель проводить время в соцсетях....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru