Классический цикл for больше не нужен
От: Шахтер Интернет  
Дата: 30.06.18 15:52
Оценка: 1 (1) +1 -1 :))) :)))
Его можно заменить

/* main.cpp */ 

#include <iostream>

using namespace std;

/* struct Empty */

struct Empty
 {
 };

/* class IntRange */

class IntRange
 {
   int ind;
   int lim;

  public:

   IntRange(int ind_,int lim_) : ind(ind_),lim(lim_) {}

   // loop

   bool operator != (Empty) const { return ind<lim; }

   int operator * () const { return ind; }

   void operator ++ () { ind++; }

   // begin()/end()

   IntRange begin() const { return *this; }

   Empty end() const { return {}; }
 };

/* main() */

int main()
 {
  // for(int i=0; i<10 ;i++)

  for(int i : IntRange(0,10) ) cout << i << ' ' ;

  cout << endl << endl ;

  return 0;
 }
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re: Классический цикл for больше не нужен
От: reversecode google
Дата: 30.06.18 15:59
Оценка:
с пробуждением, где вы были последние десяток лет ?
даже for уже не нужен
https://www.youtube.com/watch?v=OI0YFgEscGQ
Re: Классический цикл for больше не нужен
От: Muxa  
Дата: 30.06.18 16:01
Оценка:
Ш>Его можно заменить

Чем это заменишь?
for (int i = 0, j = 0; i + j < 100; i += 1; j += 2)
Re: Классический цикл for больше не нужен
От: Nikе Россия  
Дата: 30.06.18 16:02
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>/* main.cpp */


Это что за каменный век??
Нужно разобрать угил.
Re: Классический цикл for больше не нужен
От: std.denis Россия  
Дата: 30.06.18 16:21
Оценка:
Ш> for(int i : IntRange(0,10) ) cout << i << ' ' ;

я понимаю с сахарком в виде for (n in 0..<10). но тут какое-то шило на мыло
Re: Классический цикл for больше не нужен
От: Nikе Россия  
Дата: 30.06.18 16:25
Оценка:
Здравствуйте, Шахтер, Вы писали:

Я однажды для класса Rectangle сделал так:
Rectangle rect( 0, 0, 10, 10 );
for( auto line_y : rect )
{
  for( auto x: line_y )
  {
    ...
  }
}


Но чего-то не пошло.
Нужно разобрать угил.
Re[2]: Классический цикл for больше не нужен
От: rg45 СССР  
Дата: 30.06.18 18:31
Оценка: 9 (1) :))
Здравствуйте, Muxa, Вы писали:

M>Чем это заменишь?

M>for (int i = 0, j = 0; i + j < 100; i += 1; j += 2)

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

for (int i = 0; i < 34; ++i)
{
  const int j = i * 2;
}
--
Re: Классический цикл for больше не нужен
От: Анатолий Широков СССР  
Дата: 30.06.18 18:45
Оценка:
Здравствуйте, Шахтер, Вы писали:

Погоди, ты хочешь сказать, что концепцию генератора открыл только сейчас?

Меня больше интересует как уравнять шансы co_yeild по сравнению с обычным генератором: https://gist.github.com/anatoly-spb/ea34929134454a2b8752932fc30e9744

MSVC2017 co_yeild выполняется с 17-кратным отставанием.
Отредактировано 30.06.2018 18:54 Анатолий Широков . Предыдущая версия .
Re: Классический цикл for больше не нужен
От: rg45 СССР  
Дата: 30.06.18 19:04
Оценка: 5 (1) -1
Здравствуйте, Шахтер, Вы писали:

Ш>Его можно заменить


Ну вот взрослый же человке, а ударился в какое-то детство. Все велосипеды давано изобретены:

https://ideone.com/FQiJXY

#include <iostream>
#include <boost/range/irange.hpp>

int main()
{
  for (auto i : boost::irange(0, 10))
  {
    std::cout << i << std::endl;          
  }
}
--
Re: Классический цикл for больше не нужен
От: SkyDance Земля  
Дата: 30.06.18 21:01
Оценка:
Ш>Его можно заменить

А вот интересно, результирующий машинный код будет разным, одинаковым, или оччччень разным?
Re[2]: Классический цикл for больше не нужен
От: Шахтер Интернет  
Дата: 01.07.18 06:41
Оценка: +1
Здравствуйте, SkyDance, Вы писали:

Ш>>Его можно заменить


SD>А вот интересно, результирующий машинный код будет разным, одинаковым, или оччччень разным?


У нормального компилятора одинаковым.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[2]: Классический цикл for больше не нужен
От: Шахтер Интернет  
Дата: 01.07.18 06:43
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

АШ>Здравствуйте, Шахтер, Вы писали:


АШ>Погоди, ты хочешь сказать, что концепцию генератора открыл только сейчас?


Нет, я хочу сказать, что только в современном С++ она допускает правильную реализацию.

АШ>Меня больше интересует как уравнять шансы co_yeild по сравнению с обычным генератором: https://gist.github.com/anatoly-spb/ea34929134454a2b8752932fc30e9744


АШ>MSVC2017 co_yeild выполняется с 17-кратным отставанием.


А причем здесь корутины???
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re: Классический цикл for больше не нужен
От: _NN_ www.nemerleweb.com
Дата: 01.07.18 08:30
Оценка:
http://rsdn.org/forum/src/1531909.all
Автор: _nn_
Дата: 10.12.05


Уже было для старых плюсов.
В результате получался аналогичный выхлоп как и с ручным циклом.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[3]: Классический цикл for больше не нужен
От: Анатолий Широков СССР  
Дата: 01.07.18 16:32
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>Здравствуйте, Анатолий Широков, Вы писали:


АШ>>Здравствуйте, Шахтер, Вы писали:


АШ>>Погоди, ты хочешь сказать, что концепцию генератора открыл только сейчас?


Ш>Нет, я хочу сказать, что только в современном С++ она допускает правильную реализацию.


C++11? да, современный уже лет 7 как

АШ>>Меня больше интересует как уравнять шансы co_yeild по сравнению с обычным генератором: https://gist.github.com/anatoly-spb/ea34929134454a2b8752932fc30e9744


АШ>>MSVC2017 co_yeild выполняется с 17-кратным отставанием.


Ш>А причем здесь корутины???


При том, что это еще один способ реализации генератора.
Re[3]: Классический цикл for больше не нужен
От: SkyDance Земля  
Дата: 02.07.18 04:03
Оценка: +1
SD>>А вот интересно, результирующий машинный код будет разным, одинаковым, или оччччень разным?
Ш>У нормального компилятора одинаковым.

А можно список "нормальных"?
Re[4]: Классический цикл for больше не нужен
От: Шахтер Интернет  
Дата: 02.07.18 06:15
Оценка: -1
Здравствуйте, Анатолий Широков, Вы писали:

АШ>Здравствуйте, Шахтер, Вы писали:


Ш>>Здравствуйте, Анатолий Широков, Вы писали:


АШ>>>Здравствуйте, Шахтер, Вы писали:


АШ>>>Погоди, ты хочешь сказать, что концепцию генератора открыл только сейчас?


Ш>>Нет, я хочу сказать, что только в современном С++ она допускает правильную реализацию.


АШ>C++11? да, современный уже лет 7 как


С++17

АШ>>>Меня больше интересует как уравнять шансы co_yeild по сравнению с обычным генератором: https://gist.github.com/anatoly-spb/ea34929134454a2b8752932fc30e9744


АШ>>>MSVC2017 co_yeild выполняется с 17-кратным отставанием.


Ш>>А причем здесь корутины???


АШ>При том, что это еще один способ реализации генератора.


Нет, ну можно летать из Питера в Москву через Вашингтон, если денег больше чем ума.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[4]: Классический цикл for больше не нужен
От: Шахтер Интернет  
Дата: 02.07.18 06:27
Оценка:
Здравствуйте, SkyDance, Вы писали:

SD>>>А вот интересно, результирующий машинный код будет разным, одинаковым, или оччччень разным?

Ш>>У нормального компилятора одинаковым.

SD>А можно список "нормальных"?


Я не занимаюсь тестированием компилятров.
Но ты можешь, если интересно, сходить на этот сайт здесь.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[5]: Классический цикл for больше не нужен
От: Анатолий Широков СССР  
Дата: 02.07.18 07:27
Оценка: -1
Здравствуйте, Шахтер, Вы писали:

АШ>>C++11? да, современный уже лет 7 как


Ш>С++17


C++11: https://en.cppreference.com/w/cpp/language/range-for

АШ>>При том, что это еще один способ реализации генератора.


Ш>Нет, ну можно летать из Питера в Москву через Вашингтон, если денег больше чем ума.


Так-то оно так, но может разберешься сначала в вопросе, а потом будешь умничать?
Re[6]: Классический цикл for больше не нужен
От: Шахтер Интернет  
Дата: 03.07.18 07:12
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

АШ>Здравствуйте, Шахтер, Вы писали:


АШ>>>C++11? да, современный уже лет 7 как


Ш>>С++17


АШ>C++11: https://en.cppreference.com/w/cpp/language/range-for


Данный код не легален в С++11. Учи матчасть.

АШ>>>При том, что это еще один способ реализации генератора.


Ш>>Нет, ну можно летать из Питера в Москву через Вашингтон, если денег больше чем ума.


АШ>Так-то оно так, но может разберешься сначала в вопросе, а потом будешь умничать?


Не стоит хамить человеку, который на порядок умнее тебя.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[7]: Классический цикл for больше не нужен
От: night beast СССР  
Дата: 03.07.18 07:24
Оценка:
Здравствуйте, Шахтер, Вы писали:

АШ>>C++11: https://en.cppreference.com/w/cpp/language/range-for


Ш>Данный код не легален в С++11. Учи матчасть.


разные типы итераторов?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.