Информация об изменениях

Сообщение Re[9]: range based for - первый/последний? от 13.03.2019 19:20

Изменено 13.03.2019 19:22 rg45

Re[9]: range based for - первый/последний?
Здравствуйте, Marty, Вы писали:

M>>>Я бы сказал, что твой вариант — это случай преждевременной оптимизации.


R>>Ну ты для начала предоставь РАВНОЦЕННЫЙ вариант, потом можно будет сравнить. А пока говорить-то не о чем.


M>Ну, и для начала — почему именно равноценный? Я же сказал, что в простых известных случаях предложенный Went'ом вариант проще и удобней в использовании.


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

M>ЗЫ Кстати, а зачем буст?


Затем, что в той версии gcc, что в ideone, этих функций просто еще нету. Требование "чтоб без буста" ты ведь позже ввел.

M>Чем плох такой вариант:


Да ни чем не хуже. Только зачем ты этот топик создавал, если вариант обычного for тебя тоже устраивает, оказывается

  ccode
M>
M>#include <iostream>
M>#include <boost/range/iterator_range.hpp>

M>template <typename SequenceT>
M>void print_sequence(const SequenceT& seq)
M>{
M>    if (!boost::empty(seq))
M>    {
M>        auto it = std::begin(seq);
M>        std::cout << "[" << *it;
M>        ++it;
        
M>        for (; it!=std::end(seq); ++it)
M>        {
M>            std::cout << ", " << *it;
M>        }
M>        std::cout << "]"<< std::endl;
M>    }
M>}

M>int main()
M>{
M>    const int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

M>    print_sequence(array);
M>}
Re[9]: range based for - первый/последний?
Здравствуйте, Marty, Вы писали:

M>>>Я бы сказал, что твой вариант — это случай преждевременной оптимизации.


R>>Ну ты для начала предоставь РАВНОЦЕННЫЙ вариант, потом можно будет сравнить. А пока говорить-то не о чем.


M>Ну, и для начала — почему именно равноценный? Я же сказал, что в простых известных случаях предложенный Went'ом вариант проще и удобней в использовании.


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

M>ЗЫ Кстати, а зачем буст?


Затем, что в той версии gcc, что в ideone, этих функций просто еще нету. Требование "чтоб без буста" ты ведь позже выдвинул.

M>Чем плох такой вариант:


Да ни чем не хуже. Только зачем ты этот топик создавал, если вариант обычного for тебя тоже устраивает, оказывается

  ccode
M>
M>#include <iostream>
M>#include <boost/range/iterator_range.hpp>

M>template <typename SequenceT>
M>void print_sequence(const SequenceT& seq)
M>{
M>    if (!boost::empty(seq))
M>    {
M>        auto it = std::begin(seq);
M>        std::cout << "[" << *it;
M>        ++it;
        
M>        for (; it!=std::end(seq); ++it)
M>        {
M>            std::cout << ", " << *it;
M>        }
M>        std::cout << "]"<< std::endl;
M>    }
M>}

M>int main()
M>{
M>    const int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

M>    print_sequence(array);
M>}