我正在使用基于的二维数组std::array。
基本上代替:
MyType myarray[X_SIZE][Y_SIZE];
Run Code Online (Sandbox Code Playgroud)
我有:
std::array<std::array<MyType, Y_SIZE>, X_SIZE> myarray;
Run Code Online (Sandbox Code Playgroud)
这工作得很好,但是IMO的声明不是很可读。
有没有一种方法可以使用一些聪明的C ++模板机制来声明,所以声明可能看起来像这样?
My2DArray<Mytype, X_SIZE, Y_SIZE> myarray;
Run Code Online (Sandbox Code Playgroud)
Rei*_*ica 21
如果只需要2D数组,则非常简单:
template <class T, std::size_t X, std::size_t Y>
using My2DArray = std::array<std::array<T, Y>, X>;
Run Code Online (Sandbox Code Playgroud)
如果您希望通用机制不限于2D数组,也可以这样做:
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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
421 次 |
| 最近记录: |