背景:

我正在尝试为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/

10-11 22:43
查看更多