【问题标题】:C++ - Multidimensional ArraysC++ - 多维数组
【发布时间】:2010-10-13 20:24:33
【问题描述】:

在处理多维数组时,是否可以为数组分配两种不同的变量类型...

例如,您有数组int example[i][j]ij 有可能是两个完全不同的变量类型,例如 int 和 string?

【问题讨论】:

    标签: c++ multidimensional-array


    【解决方案1】:

    听起来你在寻找:

    std::vector<std::map<std::string, int> > myData1;
    

    或许:

    std::map<int, std::map<std::string, int> > myData2;
    

    第一个要求您在使用索引运算符之前将向量调整为适当的大小:

    myData1.resize(100);
    myData1[25]["hello"] = 7;
    

    ...而第二个允许您直接(并且稀疏地)分配给任何元素:

    myData2[25]["hello"] = 7;
    

    【讨论】:

    • 请注意,第一种形式比第二种形式更有效,但效率并不总是一切。第二种在可用性和可扩展性上有很大的优势。另请注意,使用map,如果您尝试索引不存在的内容,它将使用默认值自动创建它。
    【解决方案2】:

    没有。那是不可能的。您可能想考虑使用STL map

    【讨论】:

      【解决方案3】:

      不,C++ 只允许整数类型(例如:int、long、unsigned int、size_t、char)作为索引。

      如果您想按字符串进行索引,可以尝试std::map&lt;std::string,mytype&gt;,但尝试将其扩展到二维会变得复杂。

      【讨论】:

        【解决方案4】:

        不,但您可以使用std::maps

        【讨论】:

          【解决方案5】:

          不,您只能使用整数类型作为索引。

          【讨论】:

          • 因此您必须使用两个单独的数组来执行类似 student_name 和 score 的操作
          • @Alec:你到底想做什么?你想让array[name][score] 访问第三条数据吗?
          【解决方案6】:

          不,你不能。不过,您可以使用std::map 来实现这一点。

          【讨论】:

            猜你喜欢
            • 2010-10-18
            • 2019-01-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-07-06
            • 2012-03-24
            相关资源
            最近更新 更多