c++ - 如何在 C++ 类或结构中声明多维数组成员?
问题描述
我创建了一个包含多维数组成员的数据结构。这个数组的维度最终由用户输入提供,并且在结构的构造中是已知的,但在此之前不知道。我提供了一个最小的工作示例,希望能证明这个问题:
struct MyStruct{
int rows;
int cols;
float data[][];
MyStruct(int m, int n) : rows(m), cols(n){
data[m][n];
}
};
在 VSC 中,我得到一个解析错误float data[][];
,上面写着:'一个数组可能没有这种类型的元素'
那么,有没有办法在构造的时候初始化多维数组的维度呢?还是我需要创建一个新的结构/类来保存数据?
解决方案
如何在 C++ 类或结构中声明多维数组成员?
像这样:
struct MyStruct{
float data[42][123];
};
该数组的维度最终由用户输入提供
如果数组是成员变量,这是不可能的。数组变量的大小必须是 C++ 中的编译时间常数。此外,必须知道数组元素类型的大小,因此即使是动态数组也只能具有恒定大小的内部维度。
还是我需要创建一个新的结构/类来保存数据?
首先,您必须动态创建数组。最简单的解决方案是使用std::vector
.
其次,您应该使用平面一维向量,其中行一个接一个地存储。另一种更简单的替代方法是向量向量,但这通常效率低下,除非您需要特定的操作,例如在这种情况下特别快的重新排序行。
推荐阅读
- linux - Bash 脚本执行时间过长。中止前无输出
- angular - Ionic NullInjectorError: 没有 NetworkProvider 的提供者
- javascript - 如何将对象数组从 PHP 传递给 JS?
- python - 关系Sqlalchemy中的多态性
- java - 在 Android 上更改小数点分隔符
- apache-spark-sql - 火花 SQL。大量数据保存到全局临时视图
- react-native-ios - 在运行时计算 FlatList 行组件的高度
- python - 以元组为键访问字典的键值
- c# - C# P4Api 使用 -zversion 和 -zprog 进行自定义日志记录
- sharepoint - Office 365/SP Online 搜索栏没有出现在顶部导航栏上