Как сделать контейнер аргументов функции независимым

Я пишу служебную функцию, которая принимает вектор элементов (может быть string, int, double, char), объединяется в одну строку и возвращает ее. Выглядит это так:

template<typename T>
std::string convert2Str(std::vector<T> const& vec) 
{
   std::ostringstream sStream; 
   for (size_t k=0; k<vec.size(); ++k) {
      sStream << vec[k] << " "; 
   }
   return sStream.str(); 
}

Я хотел бы сделать эту функцию более общей:

  • Сначала используйте итераторы вместо индексов для вектора vector . Я пробовал это std :: vector :: const_iterator it = vec.begin () перед циклом, и компилятор выдал мне ошибку: : error: ожидается ; перед ней Когда я изменяю приведенные выше определения на std :: vector :: const_iterator it = vec.begin () , ошибка исчезает. Итак, похоже, я не следую правильному синтаксису, дайте мне знать, что это такое
  • Во-вторых, сделать функцию более универсальной, сделав контейнер первого аргумента независимым. Для любого контейнера ( вектор , список , очередь , deque и т. Д.) Я хочу сделать то же самое, что и выше. Я попытался найти это в stackoverflow и не нашел удовлетворительного ответа.
6
задан Lightness Races with Monica 15 March 2012 в 23:59
поделиться