我有一个代表图表的大类。此类包含多个复杂类型的容器(向量和集合)。在搜索过程中,我需要修改图表以避免结果出现循环。由于我必须运行许多搜索,我需要经常将类恢复到其原始状态。
目前,我只是将保存的 continer 分配给修改后的:
void Graph::restore(){
mEdges=mSafeEdges; //std::vector<Edge> Edge has no heap based data
mNodes=mSafeNodes; //std::vector<GraphNode> A Graph Node contains std::set<int>
}
正如我所说,边和节点很复杂,每个节点都包含一个集合。每对容器具有相同的大小。分析我的代码表明,简单的恢复功能是程序的主要瓶颈,每次运行大约需要 6 毫秒。边缘向量需要 1.5 毫秒来复制,节点需要 4.5。是否有更好、更快的方法来复制复杂类型的容器或至少复制 Edge Vector ?