我想出了以下内容:
template <typename T> inline void printcontainer( std::vector<T> container )
{
for( auto it = container.begin(); it != container.end(); it++ )
{
std::cout << *it << std::endl;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<int> v;
v.push_back(5);
v.push_back(4);
v.push_back(3);
printcontainer(v);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
(对不起push_backs,visual studio不接受初始化列表......呃!!)
现在这个函数仅限于std::vector,我怎样才能使它能够传递其他容器,如std::list数组等......
只是不要模板容器存储的类型,而是容器本身的类型:
template <typename Container>
inline void printcontainer(const Container &container)
Run Code Online (Sandbox Code Playgroud)
请注意,我将参数更改为const引用以避免不必要的副本.
您可以使用非成员std::begin和/ std::end或使用基于范围的for循环将打印功能推广到C数组:
template <typename Container>
inline void printcontainer(const Container &container) {
for (const auto &v : container)
std::cout << v << "\n";
}
Run Code Online (Sandbox Code Playgroud)
OT评论:你可能不需要inline这里.