BacCM
@BacCM
C++ почти с рождения

Как в С++ красиво вывести элементы vector в консоль / просто в поток?

Банальная задача, миллион раз реализованная, но всегда, на мой взгляд, как-то не очень красиво.
Есть некий контейнер, пара итераторов, просто массив или что-то еще подобное.
Надо вывести значения куда-то через разделитель , да так чтобы он был только между значениями.
Есть всякие варианты - с проверкой на то первый ли это элемент, или последний элемент. Даже такой экзотический видел, с забоем последней запятой:

template <typename container>
void print(const container& c)
{
	std::cout << "(";
	std::copy(begin(c), end(c), std::ostream_iterator<container::value_type>(std::cout, ", "));
	std::cout << "\b\b)" << std::endl;
}


Наверное самым приемлемым будет, такое

if (c.size() > 0 ) std::cout << c[0];
for (auto i = begin(c) + 1; i != end(c); ++i) std::cout << ", " << *i;


Но вдруг кто-то что-то подскажет из своего опыта
  • Вопрос задан
  • 1942 просмотра
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
@Alexander1705
template <typename container>
void print(const container& c)
{
  auto it = begin(c);
  while(it != end(c) && cout << *it++, it != end(c)) { cout << ", "; }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы