Сообщение Re[3]: range based for - первый/последний? от 13.03.2019 17:38
Изменено 14.03.2019 8:18 rg45
Re[3]: range based for - первый/последний?
Здравствуйте, Marty, Вы писали:
M>Как минимум, этот код не будет корректно работать для пустого контейнера.
Все верно. Потому что этот код максимально упрощен. Если хочется универсальности, смотри первоначальный ("сложный") вариант:
https://ideone.com/OSuZuC
M>Как минимум, этот код не будет корректно работать для пустого контейнера.
Все верно. Потому что этот код максимально упрощен. Если хочется универсальности, смотри первоначальный ("сложный") вариант:
https://ideone.com/OSuZuC
#include <iostream>
#include <boost/range/iterator_range.hpp>
template <typename SequenceT>
void print_sequence(const SequenceT& seq)
{
if (!boost::empty(seq))
{
std::cout << "[" << *std::begin(seq);
for (const auto& item : boost::make_iterator_range(seq, 1, 0))
{
std::cout << ", " << item;
}
std::cout << "]"<< std::endl;
}
}
int main()
{
const int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
print_sequence(array);
}
Re[3]: range based for - первый/последний?
Здравствуйте, Marty, Вы писали:
M>Как минимум, этот код не будет корректно работать для пустого контейнера.
Все верно. Потому что этот код максимально упрощен. Если хочется универсальности, смотри первоначальный ("сложный") вариант:
https://ideone.com/OSuZuC
M>Как минимум, этот код не будет корректно работать для пустого контейнера.
Все верно. Потому что этот код максимально упрощен. Если хочется универсальности, смотри первоначальный ("сложный") вариант:
https://ideone.com/OSuZuC
#include <iostream>
#include <boost/range/iterator_range.hpp>
template <typename SequenceT>
void print_sequence(const SequenceT& seq)
{
if (!std::empty(seq))
{
std::cout << "[" << std::front(seq);
for (const auto& item : boost::make_iterator_range(seq, 1, 0))
{
std::cout << ", " << item;
}
std::cout << "]"<< std::endl;
}
}
int main()
{
const int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
print_sequence(array);
}