我有一个复杂的数据结构定义为:
array<array<array<vector<arc>, 2>, n_ports + 2>, n_times> destinations;
其中array和vector是 and 的缩写std::array
,std::vector
n_ports 和 n_times 是unsigned int
s 并且arc
是 a struct
:
struct node { uint port; bool pickup; uint time; };
struct arc { node destination; float cost; };
基本上,对于一个三元组 (i,j,k),其中0 <= i < n_times
, 0 <= j < n_ports+2
, 0 <= k < 2
,我关联一个弧向量,我无法先验知道其维度。
这些向量不是按顺序创建的,它们的元素也不是按顺序创建的push_back
。
我遇到的问题是,我发现自己的弧线比应有的弧线多得多,而且我怀疑这些弧线是之前创建的弧线的痕迹,然后在必须调整矢量大小时将其移动(或复制?)到其他地方。
这是我设法创建的最小示例,从我实际工作的内容开始,它显示了问题。
任何帮助表示赞赏。我使用了错误的数据结构吗?我应该自己清理一些东西吗?等等