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