作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想使用枚举引用二维数组的第一维。但是,每个枚举值表示的配置有时会重叠(不是以任何模式化的方式),这意味着数组中的数据有时会相同。因此,我想让一些元素指向相同的数据数组,如下图所示。
有没有办法在 C++ 中的声明时执行此操作?
最佳答案
是的,您可以使用指针数组构建这样的数组;您将能够像引用常规二维数组一样引用该数组中的元素。这是一个例子:
enum MyEnum {
enumFirst = 0
, enumSecond = 1
, enumSecondShared = 2
, enumThird = 3
};
static int enumFirstData[] = {1, 2, 3};
static int enumSecondData[] = {4, 3, 2};
static int enumThirdData[] = {9, 7, 8};
int *enumData[] = {
enumFirstData
, enumSecondData
, enumSecondData // <== Shared
, enumSecondData
};
现在您可以像这样引用这个数组的元素:
for (int i = 0 ; i != 3 ; i++) {
cout << enumData[enumSecondShared][i] << endl;
}
由于您使用的是 C++,因此使用 std::vector
或 std::array
是制作集合的首选方式。您可以使用与上述相同的技巧来建立共享集合元素。
关于c++ - 在 C++ 中定义一个不寻常的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13931882/
我是一名优秀的程序员,十分优秀!