0

我有一个基于丑陋容器创建容器的工厂

template<class T>
std::vector<T> containerFactory(const UglyContainer* uglyContainer)
{
    std::vector<T> container(uglyContainer->count);
    Getter getter;
    for(unsigned int i=0;i<uglyContainer->count;++i)
    {
        getter(container[i], uglyContainer->values[i]);
    }
    return container;
}

我该如何使用返回 const std::vector 的工厂函数来补充 containerFactory?

4

1 回答 1

2

返回向量上的 const 无关紧要。由于是按值返回的,所以会被复制,const 会应用到复制的使用上。

由于您在工厂方法中在堆栈上创建向量,因此无法通过引用返回向量。

作为容器工厂的健壮性问题,您可以考虑将向量作为工厂方法的参数并附加到它以避免向量的副本。

于 2012-09-14T15:49:44.517 回答