背景:
我正在尝试为STL容器创建一些自己的包装类,因此我可以将实现与我的代码库分开。我已经使用我的Vector类包装器做了一点点:
Vector.h
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
我必须在实例化任何对象时立即指定大小。因此,如果我像我对矢量类一样创建了一个成员变量,那么我必须给这个数组对象一个大小。我希望用户使用类似的构造函数设置指定大小(例如MyArrayClass myArray(10))。我如何尝试实现此数组包装器?
答案 0 :(得分:1)
我宁愿用户使用类似的东西来指定大小 构造函数设置为Vector的(例如MyArrayClass myArray(10))。怎么样 我可以尝试实现这个数组包装器吗?
与std::array
不同,std::vector
的目的是在编译时指定大小。它的底层结构是一个普通的vanilla数组,在编译时需要大小。
如果它有用,我可以想到以下包装
template <typename T, std::size_t N>
class Array {
public:
// stuff
private:
std::array<T, N> array_;
};