动态维度数组的 C++ 别名指针
c++ aliasing pointer of dynamic dimensional array
我正在研究多维数组。 矩阵的数据和维度在运行时给出, 我尝试使用类型别名指针访问数据,如下所示。
它与我的代码配合得很好,但我不确定它是否在 c++ 标准范围内。
我可以像这样使用类型别名吗:未知维数组指针?
cin >> a; //1
cin >> b; //2
cin >> c; //3
int* buf = new int[100]; //just to allocate some memory for test
using arr_t = int (*)[a][b][c]; //type alias of pointer of array
arr_t arr = reinterpret_cast<arr_t>(buf);
buf[3] = 1;
cout << arr[0][1][0] << endl; // 1 (It's easier than buf[b*c*0 + c*1 + 0])
cout << (void*)&buf[3] << endl; //0x18b8e78
cout << (void*)&(*arr)[0][1][0] << endl; //0x18b8e78
具有运行时值的int (*)[a][b][c]
使用VLA(可变长度数组(扩展名,因此不是标准C++。
即使有了该扩展名,您的演员表也会违反严格的别名规则。
相关文章:
- 部分定义/别名模板模板参数
- 如何在C++20中创建模板别名的推导指南
- 告诉c++编译器该参数没有别名
- boost::spirit::karma 替代生成器,带有 boost::variant 由字符串和字符串别名组成
- 继承模板类中的类型别名
- 别名模板的专业化 C++11 中没有开销的最佳替代方案
- 为什么 GCC 在使用类型别名时处理 const reinterpret_cast不同?
- 类作用域的类型别名"using":[何时]方法中的用法可以先于类型别名?
- 为什么我们不能重复使用具有不同模板参数的别名模板标识符?
- C++模板/别名 - 模板参数列表中参数 1 处的类型/值不匹配
- 如何使用类型别名从模板化类中隐藏模板列表
- 模板模板参数和模板别名:编译器错误?
- 使用定义函数模板别名
- 为模板参数包添加别名
- 如何检测类型类型别名?
- C++类型别名,其中值被替换
- C++使用默认模板参数键入别名和转发声明
- 在Qt中注册自定义元类型的别名类型
- 缺少别名模板C++参数列表
- 使用外部定义的模板类型作为模板参数的更通用模板的模板别名