C++ 2d地图?像二维阵列?

mrg*_*g95 2 c++ arrays 2d map

是否可以制作2d地图?

像这样:

map< int, int, string> testMap;
Run Code Online (Sandbox Code Playgroud)

填充值将如下:

testMap[1][3] = "Hello";
Run Code Online (Sandbox Code Playgroud)

谢谢你的时间 :)

and*_*dre 18

是的,使用 std::pair

std::map< std::pair<int, int>, string> testMap;
testMap[std::make_pair(1,3)] = "Hello";
Run Code Online (Sandbox Code Playgroud)

  • 绝对不是'O(lg(n)*lg(n))`.它是'O(lg(n)+ lg(n))`,或者只是'O(lg(n))`.第一个地图查找采用`lg(n)`,第二个采用`lg(n)`.当然,这是假设一个正方形的"数组".这可能应该分解为`m`和`n`,但它仍然以类似的方式简化. (5认同)
  • Qt Creator 只是一个 IDE(集成开发环境),而不是编译器或不同形式的 C++。因此,尽管 Qt Creator 在处理定义 QMap 的 Qt 库时很有用,但您仍然可以在 Qt Creator 中编写标准 C++(例如使用 std::map)并编译它。 (2认同)
  • 这将比RyanMcK的解决方案效率更高。 (2认同)
  • @ mc360pro一个`std :: pair`没有添加额外的`std :: map`那么重.地图映射的查找时间是"O(Lg(n)*Lg(n))",而一对只取"O(Lg(n))". (2认同)

小智 12

您可以嵌套两个地图:

#include <iostream>
#include <map>
#include <string>

int main()
{
    std::map<int,std::map<int,std::string>> m;

    m[1][3] = "Hello";

    std::cout << m[1][3] << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)