对象之间的标准和有效映射

时间:2015-07-22 15:43:11

标签: c++ c++11 matrix multidimensional-array

我正在处理群集问题,其中我有一个叫做距离矩阵的东西。这个距离矩阵是这样的: Distance Matrix

  1. 节点数(g)是N(动态)
  2. 此矩阵是对称的(dist [i,j] == dist [j,i])
  3. g1,g2,....是对象(它们包含字符串,整数,甚至更多......)
  4. 我希望能够通过dist [4] [3]之类的简单方式达到任何值,或者像dist(g1,g5)更加清晰(这里g1和g5可能是某种指针或引用)< / LI>
  5. 许多标准算法将应用于此距离矩阵,如min,max,accumulate ..etc
  6. 最好但不是强制性的,我不想使用boost或其他第三方库
  7. 声明此矩阵的最佳标准方法是什么。

1 个答案:

答案 0 :(得分:1)

您可以像这样创建二维矢量

std::vector<std::vector<float> > table(N, std::vector<float>(N));
不要忘记像这样初始化它,它为N个成员保留内存,所以它不需要重新分配所有成员然后你添加更多。并且不会破坏记忆。 您可以像这样访问其成员

table[1][2] = 2.01;

它不会一直使用复制构造函数,因为向量索引运算符返回对成员的引用; 所以如果N不需要改变它就非常有效。