c++ - 为 STL 容器专门化成员函数

标签 c++ templates stl template-specialization

我有这样一个类:

class Foo
{

    ...
    template<template<typename...> class container>
    void fillContainer(container<int> &out)
    {
        //add some numbers to the container
    }
    ...

}

我这样做是为了能够处理不同的 STL 容器。现在我想为 std::vector 创建一个专门化来保留内存(我知道要插入的数字数量)。我读了thisthis发布,所以我做了以下事情:

class Foo
{
    //Same Thing as above
}

template<>
void Foo::fillContainer(std::vector<int> &out)
{
    //add some numbers to the container
}

现在我收到错误:error: no member function 'fillContainer' declared in 'Foo' .我想问题是 template<template<typename...> class container> .

是否有可能为 std::vector 专门化此功能? ?

最佳答案

没有理由尝试专门化它,只需添加一个重载:

class Foo
{
    ...
    template<template<typename...> class container>
    void fillContainer(container<int>& out)
    {
        //add some numbers to the container
    }

    void fillContainer(std::vector<int>& out)
    {
        //add some numbers to the container
    }

    ...
};

(在一些模糊的情况下它会有所不同,例如如果有人想要获取函数模板版本的地址,但没有什么需要专门的,而不是更简单的重载方法。)

关于c++ - 为 STL 容器专门化成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31582826/

相关文章:

c++ - 存储 2D 点以便快速检索矩形内的点

C++ 如何将对象指针发送到函数(对指针列表进行排序)

c++ - Googletest expect_call 不记录调用

c++ - 从 dll 中导入显式实例化的模板类

c++ - 这种模板函数重载的案例让我无法理解

c++ - 我应该使用什么 C++ STL 类来减少由大量小分配引起的碎片?

c++ - 数组不保存初始化值

c++ - 用于交通标志检测的特征描述符在opencv中如何工作

c++ - 我的c++代码。会不会出现内存泄漏?

c++ - 如何访问 C++ 类模板中成员参数的指针?