C++ - 多维数组

3
处理多维数组时,是否可以将两种不同的变量类型分配给数组?
例如,您有数组int example[i][j],是否可以让ij成为两种完全不同的变量类型,如int和string?
6个回答

8
听起来你正在寻找:

std::vector<std::map<std::string, int> > myData1;

或许可以这样解释:
std::map<int, std::map<std::string, int> > myData2;

第一步需要您在使用索引操作符之前将向量的大小调整到合适的大小:
myData1.resize(100);
myData1[25]["hello"] = 7;

...而第二种方法可以让您直接(且稀疏地)分配给任何元素:

myData2[25]["hello"] = 7;

1
请注意,第一种形式比第二种形式更有效率,但效率并不是一切。第二种形式在可用性和可扩展性方面具有巨大优势。此外,请注意,使用 map 如果您尝试索引不存在的内容,它将自动创建一个带有默认值的内容。 - Mark Ransom

3

不,这是不可能的。您可以考虑使用STL map


2

不,C++只允许整数类型(例如:int、long、unsigned int、size_t、char)作为索引。

如果您想使用字符串作为索引,可以尝试使用std::map<std::string,mytype>,但是将其扩展到二维会变得复杂。


2

1

不可以,你只能使用整数类型作为索引。


所以你需要使用两个单独的数组来完成类似于“学生姓名”和“分数”的操作。 - Zud
@Alec:你到底想做什么?你想让 array[name][score] 访问第三个数据吗? - JoshD
啊,我的话说得没有意义。抱歉,我正在尝试做那件事,但给出了一个非常糟糕的例子来说明我要做的事情。 - Zud

0
不可以。但是你可以使用 std::map 来实现这个功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接