如果我有一些数组numbers[] = [1, 2, 3, 4]
和array[] = ["numbers", "letters", "characters"]
,是否可以在C ++中调用名为numbers
的数组"numbers"
?我不想调用单个元素,但是使用一个数组中的名称来调用单独的数组。
答案 0 :(得分:3)
当人们有这样的问题时,就意味着人们开始尝试创建脚本语言...继续关注这个问题会让你创建一个名字可能是PHP的脚本语言,bash ...
您正在触及编程哲学:语言如何看待世界。如果你能说除母语以外的其他语言,你就会得到这样的道理:如果你说的是另一种语言,那么你的世界就会与众不同。对于编程语言,它是一样的。 C ++看待世界的方式不支持动态变量名,实际上是你要问的。
阅读这些:
https://coderwall.com/p/al0aqq/dynamic-variable-name-in-bash
https://unix.stackexchange.com/questions/60584/how-to-use-a-variable-as-part-of-an-array-name
http://php.net/manual/en/language.variables.variable.php
根据您的需要,我建议使用std::map<std::string, std::vector<int>
。或者,如有必要,请使用模板:std::map<std::string, T>
。
正如@Nybbit所说,你也可以使用std::unordered_map
。这取决于你的需要。 Google是std::map
和std::unordered_map
之间的差异。
答案 1 :(得分:1)
您可以按名称引用数组。
int numbers[] = {48, 49, 50, 51};
int letters[] = {65, 66, 67, 68};
int characters[] = { 31, 32, 33, 34};
int* array[] = {numbers, letters, characters};
请注意,这将获取数组的地址:不是字符串名称。为了让生活更轻松,您可能需要使用枚举
enum {ix_number, ix_letter, ix_char};
...
std::cout << array[ix_letter][0] << std::endl;
...
// alternatively
int* group = array[ix_char];
std::cout << group[2] << std::endl;