c++ - 如何创建 std::array 包装器类

标签 c++ arrays c++11 stl stdarray

背景:

我正在尝试为 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 我必须在实例化任何对象时立即指定一个大小。因此,如果我像对 vector 类所做的那样创建一个成员变量,我将不得不为该数组对象指定一个大小。我宁愿用户使用一些类似于 Vector 的构造函数设置来指定大小(例如 MyArrayClass myArray(10) )。我该如何尝试实现这个数组包装器?

最佳答案

I would rather the size be specified by the user using some similar constructor setup to Vector's (ex. MyArrayClass myArray(10) ). How might I try and implement this Array wrapper?

std::vector 不同,std::array 的目的是在编译时指定大小。它的底层结构是一个普通数组,需要在编译时确定大小。

我可以想到下面的包装器以防它有用

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/

相关文章:

pointers - unique_ptr 的意义何在?

c++ - 测试 1 的运行时错误(Codeforces)

c++ - 在 C++ 中打印总和为目标的子集

c++ - 错误 : redefinition of default parameter : parameter 3 but not redefining?

c - C中的进程结构内存分配

javascript - 在 JavaScript 上将 NSString 转换为数组

C++11;非静态数据成员初始化可以访问其他数据成员吗?

c++ - 如何使用 OpenGL 2.0 而不是更高版本?

php - C++ unordered_set 插入插入 PHP

JavaScript 高级循环