C++ 对象之间的标准高效映射

C++ 对象之间的标准高效映射,c++,c++11,matrix,multidimensional-array,C++,C++11,Matrix,Multidimensional Array,我正在研究聚类问题,我有一个叫做距离矩阵的东西。该距离矩阵类似于: 节点数(g)为N(动态) 这个矩阵是对称的(dist[i,j]==dist[j,i]) g1,g2,。。。。是对象(它们包含字符串、整数,甚至更多..) 我希望能够通过dist[4][3]这样的简单方式或dist(g1,g5)这样更清晰的方式(这里g1和g5可能是某种指针或引用)来达到任何值 许多std算法将应用于该距离矩阵,如min、max、ACCUMENT等 最好但不是强制性的,我不想使用boost或其他第三方库 声明此矩

我正在研究聚类问题,我有一个叫做距离矩阵的东西。该距离矩阵类似于:

  • 节点数(g)为N(动态)
  • 这个矩阵是对称的(dist[i,j]==dist[j,i])
  • g1,g2,。。。。是对象(它们包含字符串、整数,甚至更多..)
  • 我希望能够通过dist[4][3]这样的简单方式或dist(g1,g5)这样更清晰的方式(这里g1和g5可能是某种指针或引用)来达到任何值
  • 许多std算法将应用于该距离矩阵,如min、max、ACCUMENT等
  • 最好但不是强制性的,我不想使用boost或其他第三方库

  • 声明此矩阵的最佳标准方法是什么。

    您可以这样创建二维向量

    std::vector<std::vector<float> > table(N, std::vector<float>(N));
    
    它不总是使用复制构造函数,因为向量索引操作符返回对成员的引用;
    因此,如果N不需要更改,它是非常有效的。

    可能的答案太多,或者好的答案对于这种格式来说太长。请添加详细信息以缩小答案集或隔离一个可以在几段中回答的问题。我将使用三个向量。一个存储行名称,一个存储列名,一个存储距离值。@barry我认为这可能是一个著名的问题,因为许多在机器学习领域工作的人以前可能会遇到这个问题。不过,我会看看能否提供更多细节。。谢谢
    table[1][2] = 2.01;