如何有效地将对象(或一系列对象)从向量A复制到向量B,
其中向量B已包含与向量A相同的某些对象,
所以没有从矢量A中复制的对象已经在向量B中列出了吗?
我有一个图表存储为边缘矢量std::vector<MinTreeEdge>minTreeInput.
我有一个从该图创建的最小生成树,存储在std::vector<MinTreeEdge>minTreeOutput.
我正在尝试添加一个随机添加一定数量的边缘minTreeOutput.为此,我想从minTreeInput后面复制元素,minTreeOutput直到后者包含所需的边数.当然,必须尚未存储复制的每个边缘对象minTreeOutput.此图表中不能有重复的边缘.
以下是我到目前为止所提出的内容.它工作,但它真的很长,我知道循环必须运行多次,具体取决于图形和树.我想知道如何正确地做到这一点:
// Edge class
struct MinTreeEdge
{
// For std::unique() between objects
bool operator==(MinTreeEdge const &rhs) const noexcept
{
return lhs == rhs.lhs;
}
int lhs;
int node1ID;
int node2ID;
int weight;
......
};
......
// The usage
int currentSize = minTreeOutput.size();
int targetSize = currentSize + numberOfEdgesToReturn;
int sizeDistance = targetSize - currentSize;
while(sizeDistance != 0)
{
//Probably really inefficient
for(std::vector<MinTreeEdge>::iterator …Run Code Online (Sandbox Code Playgroud)