如何在C++数组中使用字符串索引(类似于PHP)?

5
如何在C++数组中使用字符串索引(类似于PHP)?
7个回答

22

您可以使用std::map来获取一个关联容器,可以通过字符串索引查找值。例如std::map<std::string, int>会将整数值与std::string查找键相关联。


4

它们被称为关联数组(或字典),它们允许您使用任何想要的类型作为键,而不仅仅是整数。在PHP中,它们受到本地支持,在C++中,除非您在.NET中,否则应该使用std::map它有自己的字典类


3

2
许多人说使用std::map是一种选择,但为了达到与数组索引使用同样的效果,我认为使用std::unordered_map可能更好。因为对于具有字符串类型的key_typestd::map的性能可能非常糟糕。由于在最坏情况下比较两个字符串需要O(string::size())时间。因此,如果索引字符串非常长且相似,并且它们的数量太大,那么使用std::map是不现实的。而且我有一些更好的实现方式,但我不确定它们是否可行(尤其是第二种方法)。
  1. 使用Trie。
  2. 使用string_view替代字符串。

1

有一个名为矩阵库的数据结构。该库支持您正在寻找的2D数组和关联数组。

Matrix<string> arr(3, 2);

// setting keys
arr[0][0] = "name";
arr[0][1] = "lastname";

// using array
arr[1]["name"] = "John";
arr[1]["lastname"] = "Parkers";

arr[2]["name"] = "Sam";
arr[2]["lastname"] = "Bendrou";

在这里,您可以找到 Matrix 库的 文档


1
你需要使用类似 std::map 的东西来创建一个具有类似关联数组行为的对象。

0

这个功能通常称为Map。

如果您已经使用Boost,可以使用它们的Maps,否则您必须三思而后行 :) 好吧,如果不是Dimtry - std::map就是您需要的。


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