将 std 容器传递给函数

2024-01-27

我想出了以下几点:

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;
}

(感到抱歉push_backs,Visual Studio 不接受初始化列表...呃!!)

现在这个功能仅限于std::vector,我怎样才能做到这样我就可以传递其他容器,比如std::list数组等...


只是不要在容器存储的类型上进行模板化,而是在容器本身的类型上进行模板化:

template <typename Container>
inline void printcontainer(const Container &container)

请注意,我将参数更改为const参考以避免不必要的复制。

您可以使用非成员将打印函数推广到 C 数组std::begin and std::end或者通过使用基于范围for loop http://en.cppreference.com/w/cpp/language/range-for:

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

OT 备注:您可能不需要inline here.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 std 容器传递给函数 的相关文章

随机推荐