当前位置:  开发笔记 > 编程语言 > 正文

将std容器传递给函数

如何解决《将std容器传递给函数》经验,为你挑选了1个好方法。

我想出了以下内容:

template  inline 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数组等......



1> Baum mit Aug..:

只是不要模板容器存储的类型,而是容器本身的类型:

template 
inline void printcontainer(const Container &container)

请注意,我将参数更改为const引用以避免不必要的副本.

您可以使用非成员std::begin和/ std::end或使用基于范围的for循环将打印功能推广到C数组:

template 
inline void printcontainer(const Container &container) {
    for (const auto &v : container)
        std::cout << v << "\n";
}

OT评论:你可能不需要inline这里.


[基于范围的循环(自C++ 11起)](http://en.cppreference.com/w/cpp/language/range-for)
推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有