背景:
我正在尝试为STL容器创建一些自己的包装器类,以便将实现与代码库分开。我已经用我的Vector类包装器完成了一点工作,如下所示:
vector
template<typename type>
class Vector
{
public:
Vector();
Vector(std::initializer_list<type> initializer);
Vector(int size, int defaultValue);
Vector(int size);
~Vector();
void PushBack(type itemToPushBack);
type AtPosition(int position);
private:
std::vector<type> m_collectionOfItems;
};
如您所见,我已经设置了构造函数,并且使用
std::vector
作为成员,以便可以在自己的Vector类中调用std::vector函数。问题:
使用
std::array
时,我必须在实例化任何对象时立即指定大小。因此,如果像 vector 类一样创建一个成员变量,则必须给该数组对象一个大小。我宁愿由用户使用一些类似于Vector的构造函数设置(例如MyArrayClass myArray(10))来指定大小。我如何尝试实现此Array包装器? 最佳答案
与std::array
不同,std::vector
的目的是在编译时指定大小。它的基础结构是一个普通的 Vanilla 数组,需要在编译时调整大小。
我可以想到以下包装器,以防有用
template <typename T, std::size_t N>
class Array {
public:
// stuff
private:
std::array<T, N> array_;
};
关于c++ - 如何创建std::array包装器类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40825795/