Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
d7d1cd
192 / 115 / 36
Регистрация: 30.06.2011
Сообщений: 1,021
#1

Прервать цикл из цикла, вложенного в него - C++

02.09.2016, 09:53. Просмотров 502. Ответов 20
Метки нет (Все метки)

Приветствуют. Собственно, вопрос в названии темы.
C++
1
2
3
4
5
6
7
8
9
for(int i = 1; i <= 10; i++)
 for(int j = 1; j <= 5; j++)
{
 if(/* здесь условие выхода из обоих циклов */)
  {
   /* как выйти сразу из 2-х циклов? */
   /* break даст выход только из цикла j */
  }
}
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nimazzzy
Заблокирован
02.09.2016, 09:58     Прервать цикл из цикла, вложенного в него #2
- Заводить дополнительную булеву переменную, которую проверять в условии внешнего цикла, выставлять во внутреннеим.
- goto
d7d1cd
192 / 115 / 36
Регистрация: 30.06.2011
Сообщений: 1,021
02.09.2016, 10:02  [ТС]     Прервать цикл из цикла, вложенного в него #3
nimazzzy, то есть, специального оператора в С++ для этого нет?
gru74ik
Модератор
Эксперт CЭксперт С++
4106 / 1751 / 197
Регистрация: 20.02.2013
Сообщений: 4,856
Записей в блоге: 21
02.09.2016, 10:08     Прервать цикл из цикла, вложенного в него #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от d7d1cd Посмотреть сообщение
специального оператора в С++ для этого нет?
Есть. Оберните Ваши циклы в функцию или в лямбду и выходите с помощью return.
nimazzzy
Заблокирован
02.09.2016, 10:10     Прервать цикл из цикла, вложенного в него #5
Цитата Сообщение от d7d1cd Посмотреть сообщение
специального оператора в С++ для этого нет?
Специального оператора нет.
Hikari
Хитрая блондиночка $)
1447 / 954 / 285
Регистрация: 21.12.2015
Сообщений: 3,798
02.09.2016, 10:10     Прервать цикл из цикла, вложенного в него #6
Цитата Сообщение от gru74ik Посмотреть сообщение
Ваши циклы в функцию или в лямбду
Вотъ вотъ-с.
И я того же мнения. Плюсую.
d7d1cd
192 / 115 / 36
Регистрация: 30.06.2011
Сообщений: 1,021
02.09.2016, 10:16  [ТС]     Прервать цикл из цикла, вложенного в него #7
Цитата Сообщение от gru74ik Посмотреть сообщение
Оберните Ваши циклы в функцию или в лямбду и выходите с помощью return.
Это понятно. Спасибо за ответ.
Эммм... А что такое лямбда?
Hikari
Хитрая блондиночка $)
1447 / 954 / 285
Регистрация: 21.12.2015
Сообщений: 3,798
02.09.2016, 10:19     Прервать цикл из цикла, вложенного в него #8
Цитата Сообщение от d7d1cd Посмотреть сообщение
что такое лямбда?
https://ru.wikipedia.org/wiki/Анонимная_функция
nimazzzy
Заблокирован
02.09.2016, 10:19     Прервать цикл из цикла, вложенного в него #9
http://en.cppreference.com/w/cpp/language/lambda
d7d1cd
192 / 115 / 36
Регистрация: 30.06.2011
Сообщений: 1,021
02.09.2016, 10:26  [ТС]     Прервать цикл из цикла, вложенного в него #10
Hikari, nimazzzy, спасибо за ссылки. Дома почитаю (на работе интернет урезан, эти сайты не открываются).
Может кто-то перепишет мой пример с циклами и покажет как использовать эту анонимную функцию?
nimazzzy
Заблокирован
02.09.2016, 10:35     Прервать цикл из цикла, вложенного в него #11
C++
1
2
3
4
5
6
7
8
    auto f = []()
    {
        for (int i = 1; i <= 10; i++)
            for (int j = 1; j <= 5; j++)
                if (i > 2)
                    return;
    };
    f();
gru74ik
Модератор
Эксперт CЭксперт С++
4106 / 1751 / 197
Регистрация: 20.02.2013
Сообщений: 4,856
Записей в блоге: 21
02.09.2016, 10:48     Прервать цикл из цикла, вложенного в него #12
d7d1cd, учтите, чтобы использовать лямбды, компилятор должен поддерживать стандарт C++11. И очень часто бывает так, что поддержку стандарта C++11 надо галками в настройках IDE отдельно включать, либо прописывать в файлах настройки проекта специальные строчки, чтобы поддержка С++11 включилась.
d7d1cd
192 / 115 / 36
Регистрация: 30.06.2011
Сообщений: 1,021
02.09.2016, 10:50  [ТС]     Прервать цикл из цикла, вложенного в него #13
Цитата Сообщение от gru74ik Посмотреть сообщение
d7d1cd, учтите, компилятор должен поддерживать стандарт C++11. И очень часто бывает так, что поддержку стандарта C++11 надо галками в настройках IDE отдельно включать, либо прописывать в файлах настройки проекта специальные строчки, чтобы поддержка С++11 включилась.
Видимо у меня не включен стандарт С++11, так как приведенный пример в C++Builder XE8 вызывает ошибку Expression syntax.
Как включить?
MansMI
1137 / 934 / 240
Регистрация: 08.01.2012
Сообщений: 3,399
02.09.2016, 10:52     Прервать цикл из цикла, вложенного в него #14
как вариант
C++
1
2
3
4
5
6
7
8
9
10
for(int i = 1; i <= 10; i++)
{
   int j;
   for(j = 1; j <= 5; j++)
   {
      .....
      if(почему-то) break;
   }
   if(j<=5) break;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2016, 10:56     Прервать цикл из цикла, вложенного в него
Еще ссылки по теме:
C++ Как прервать цикл используя условия ?
Как правильно прервать/возобновить цикл C++
Как реализовать переход на следующую итерацию внешнего цикла из вложенного? C++
C++ Как реализовать переход на следующую итерацию внешнего цикла из вложенного?

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

Или воспользуйтесь поиском по форуму:
d7d1cd
192 / 115 / 36
Регистрация: 30.06.2011
Сообщений: 1,021
02.09.2016, 10:56  [ТС]     Прервать цикл из цикла, вложенного в него #15
MansMI, это конечно вариант, спасибо. Именно на таких вариантах-костылях у меня сейчас и работает код. Но хочется познать всю мощь языка С++
Yandex
Объявления
02.09.2016, 10:56     Прервать цикл из цикла, вложенного в него
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru