现在我正在编写解决车辆路径问题的一些代码。为此,一个重要的决定是选择如何对解决方案进行编码。一个解决方案包含几条路线,每个车辆一个。每条路线都有客户访问顺序,路线负载和路线长度。 要对解决方案信息进行修改,我还需要快速找到一些信息。例如,
哪条路线是客户所在?
路线有哪些客户?
路线中有多少个节点?
节点前面或后面有什么节点?矢量与动态数组相比,速度有很大差异吗?
现在,我想使用以下结构来保持解决方案。
struct Sol
{
vector<short> nextNode; // show what is the next node of each node;
vector<short> preNode; //show what is the preceding node
vector<short> startNode;
vector<short> rutNum;
vector<short> rutLoad;
vector<float> rutLength;
vector<short> rutSize;
};
每个向量的通用大小是实例相关的,在200-2000之间。
我听说有可能使用动态数组来完成这项工作。但在我看来,动态数组更复杂。必须找到内存并释放内存。这里我的问题是双重的。
如何使用动态数组来实现相同的目的?如何定义结构或类,以便内存位置和发布可以轻松处理?
使用动态数组会比使用矢量更快吗?假设解决方案结构需要被访问百万次。
为什么你有一个成员数组的结构,而不是一个具有成员的结构数组?后者不那么容易混淆,不易出错并且速度更快。 –
每个阵列中的信息是不同的,而不是相同的项目 – Jackie