作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用基于 std::array
的二维数组。
基本上代替:
MyType myarray[X_SIZE][Y_SIZE];
我有:
std::array<std::array<MyType, Y_SIZE>, X_SIZE> myarray;
这工作得很好,但在我看来,声明的可读性不是很好。
有没有办法使用一些巧妙的 C++ 模板机制来声明这一点,因此声明可能看起来像这样?
My2DArray<Mytype, X_SIZE, Y_SIZE> myarray;
最佳答案
如果您只想要二维数组,那相当简单:
template <class T, std::size_t X, std::size_t Y>
using My2DArray = std::array<std::array<T, Y>, X>;
如果你想要一个不限于二维数组的通用机制,也可以做到:
template <class T, std::size_t N, std::size_t... Ns>
struct AddArray {
using type = std::array<typename AddArray<T, Ns...>::type, N>;
};
template <class T, std::size_t N>
struct AddArray<T, N> {
using type = std::array<T, N>;
};
template <class T, std::size_t... N>
using MyNDArray = typename AddArray<T, N...>::type;
关于c++ - 优雅地声明 2(甚至多)维 std::array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57758589/
我是一名优秀的程序员,十分优秀!