我想編寫一個函數,它將採用stl容器(如集合,向量或列表) ,然後遍歷內容,然後將它們附加到字符串並返回字符串。如何在具有迭代器的stl容器上模擬函數
就是這樣。
// 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();
}
我想要這個效果。不知道如何編寫這樣的代碼。
傳遞模板並不是微不足道的。對於初學者來說,你的代碼在所有的標準編譯器中都會失敗,因爲`std :: vector`容器至少需要兩個類型參數。然後問題是標準允許實現只要默認就添加額外的參數,也就是說,在一個完全符合的實現中,`std :: vector`可以有3,4,5 ...個參數。 – 2011-01-11 13:06:22
模板模板參數很難使用和維護,並且出於各種原因,包括David指出的,它們不會增加太多。我從來沒有覺得需要達到一個生產代碼。 – 2011-01-11 13:43:42