将名称添加到C++中的数组位置
Add name to an array location in C++
在PHP中,我可以为数组中的值命名,因此我可以用名称调用它们,而不是用指针调用值。在C++中可能出现类似的事情吗?
我的目标是获取用户输入,并根据输入返回文本,某种问答。
您可以使用std::map
或std::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;
相关文章:
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 如何在数组中交换最小和最大的位置?
- C++ 2D 数组写入多个位置
- C++指针数组到字符数组中的特定位置
- 递增 'int i = 0' 以在初始化的字符数组的位置递增
- 数组中所有元素的最新最小元素的第五个位置
- 关于引用数组位置的问题
- 在给定元素在螺旋上的位置的情况下,在二维数组中查找元素
- 创建 2D 数组0xCCCCCCCC访问冲突写入位置
- 如何计算 3d 数组中的索引值在内存中的位置?如何计算字符**中的索引值在内存中的位置?
- 如何在 3x4 数组中随机 4 个不同的位置
- C++不同内存位置中的默认数组值
- 使用动态数组访问冲突写入位置
- 将字符串分配到动态数组位置时出错
- 查找数组位置的最大值
- 如何使用变量名称引用数组位置
- 面向对象C++帮助?出于某种原因,对象变量的输出返回数值数组位置而不是实际值
- 在 C++/CLI Visual Studio C++ 中以指定的数组位置将文本框中的值保存在 char 中
- 将名称添加到C++中的数组位置
- 如何在c++中表示数组位置的范围