Задать вопрос
lxstvayne
@lxstvayne
Люблю Python

Как правильно написать template функцию для контейнеров?

Я хочу написать функцию для вывода контейнеров vector, list, array и им подобным. Я полагаю необходимо использовать template функцию. Я пытался это сделать, но у меня совсем не выходит:
template <template <typename, typename> class Container, typename T, class Alloc>
    void print(Container<T, Alloc>&, string sep="", string end="\n")
    {
            std::copy(Container<T, Alloc>.begin(), Container<T, Alloc>.end(), std::ostream_iterator<T>(std::cout, sep));
            std::cout << end;
    }

error C2275.
Как это сделать ? Извините, если это глупый вопрос.
  • Вопрос задан
  • 409 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
По-моему, так гораздо понятнее:
template <class Container>
void print(const Container& c, string sep=" ", string end="\n")
{
  for (const auto& e : c)
     std::cout << e << sep;
  std::cout << end;
}


Если же очень хочется через ostream_iterator, то:
template <class Container>
void print(const Container& c, string sep=" ", string end="\n")
{

  std::ostream_iterator<typename Container::value_type> 
      out_it(std::cout, sep.c_str());
  std::copy(c.begin(), c.end(), out_it);
  std::cout << end;
}
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы