【问题标题】:How to use string indexes in c++ arrays (like php)?如何在 C++ 数组(如 php)中使用字符串索引?
【发布时间】:2009-10-11 14:41:07
【问题描述】:

如何在 c++ 数组中使用字符串索引(如在 php 中)?

【问题讨论】:

    标签: c++ arrays


    【解决方案1】:

    您可以使用std::map 获取关联容器,您可以在其中通过字符串索引查找值。像 std::map<std::string, int> 这样的映射会将整数值与 std::string 查找键相关联。

    【讨论】:

      【解决方案2】:

      它们被称为关联数组(或字典),允许您使用任何您想要的类型作为键,而不仅仅是整数。它们在 PHP 中原生支持,在 C++ 中你应该使用 std::map 除非你在 .net 中, which has its own dictionary class

      【讨论】:

        【解决方案3】:

        最接近的可能是 std::map。

        查看wikipedia page了解详情。

        【讨论】:

          【解决方案4】:

          很多人说std::map 是一个选择。要像使用数组索引一样有效,我认为std::unordered_map 可能会更好。

          因为std::mapkey_type 的性能可能很差。因为在最坏的情况下比较两个字符串将花费O(string::size()) 时间。所以如果索引字符串很长很相似,而且数量太多,我会说使用std::map是不现实的。

          而且我有一些更好的方法来实现它,但我不确定它们是否可行(尤其是第二种)。

          1. 使用 Trie。
          2. 使用string_view 代替字符串。

          【讨论】:

            【解决方案5】:

            您需要使用 std::map 之类的东西来拥有一个行为类似于关联数组的对象。

            【讨论】:

              【解决方案6】:

              有一个名为Matrix library 的数据结构。该库支持您正在寻找的二维数组和关联数组。

              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";
              

              在这里你可以找到矩阵库的documentation

              【讨论】:

                【解决方案7】:

                这个功能通常称为地图。 如果您已经使用 Boost,则可以使用他们的地图,如果没有,您必须三思而后行 :) 好吧,如果不是 Dimtry 正确 - std::map 就是您所需要的。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-02-27
                  相关资源
                  最近更新 更多