如何在具有迭代器的stl容器上模板化一个函数

AMM*_*AMM 1 c++ templates

我想编写一个函数,它将获取一个stl容器(如set,vector或list),然后迭代内容,然后将它们附加到字符串并返回字符串.

像这样的东西.

// I dont know how to do this. Just using stl::container for meanings sake Not sure if such a thing exists?
template<typename T, typename Container = stl::container<T> >  
void JoinToString(const Container<T> cont, const char * delim, string &str)
{
   stringstream s;
   Container<T>::const_iterator it = cont.begin, last = cont.end();
   while(it != last)
   {
       s<<(*it);
       ++it;
       if(it == last)
           break;
       s<<delim;
   }
   str = s.str();
} 
Run Code Online (Sandbox Code Playgroud)

我想要一些这样的效果.不知道如何编写这样的代码.

Pon*_*gge 7

STL的风格是在传递beginend迭代器的任何算法,而不是容器本身:这使事情变得普通,并允许指针使用原生的载体.一般的C++样式注意事项也建议返回a std::string而不是使用引用参数.