你能用C ++中的名字来调用数组吗?

时间:2018-01-29 06:40:58

标签: c++ arrays call

如果我有一些数组numbers[] = [1, 2, 3, 4]array[] = ["numbers", "letters", "characters"],是否可以在C ++中调用名为numbers的数组"numbers"?我不想调用单个元素,但是使用一个数组中的名称来调用单独的数组。

2 个答案:

答案 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::mapstd::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;