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