将名称添加到C++中的数组位置

Add name to an array location in C++

本文关键字:数组 位置 C++ 添加      更新时间:2023-10-16

在PHP中,我可以为数组中的值命名,因此我可以用名称调用它们,而不是用指针调用值。在C++中可能出现类似的事情吗?

我的目标是获取用户输入,并根据输入返回文本,某种问答。

您可以使用std::mapstd::unordered_map

您可以直接使用它,从"name"(可能作为std::string)映射到任何结果值(在您的情况下听起来像另一个字符串)。

std::map<std::string, std::string> stuff;

或者,您可以间接使用它,使用映射从名称映射到数组索引。

std::vector<std::string> stuff;
std::map<std::string, std::size_t> stuffIndices;

后一个选项更复杂,因为如果您重新排列数组或其他内容,则可能需要更新映射,但是如果您需要在程序的其他位置使用该属性,它也允许您保留数组的连续存储。

是的,它是,但不是数组。事实上,PHP所说的数组不是数组,而是内部的(哈希)映射。

在 c++ 中,您可以使用std::map<std::string, T>

虽然我不熟悉 PHP 和上述机制,但我可以看到至少两种可能的方法可以在C++中完成。

首先是为数组中的某些元素分配不同的指针变量,如下所示:

int a[10];
int *myInt = &a[5];

另一种可能性是使用std::map<std::string, T>关联容器,T是要存储的数据类型。这为您提供了标记的项目,但与普通数组相比,访问元素时会有所减慢。

如果我正确理解您的问题,是的:您可以存储指针或声明对数组单元格的引用。

float my_array[ARRAY_LENGTH];
int index = ARRAY_LENGTH / 2;
float* cell_pointer = &(my_array[index]);
float& cell_reference = my_array[index];
// now you can mutate the cell conveniently
*cell_pointer += 0.6;
cell_reference *= 5.3;