小编Ito*_*let的帖子

如何有效地将唯一对象从一个向量复制到另一个向量(由相同对象的子集组成)?

如何有效地将对象(或一系列对象)从向量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)

c++ algorithm vector

0
推荐指数
1
解决办法
274
查看次数

标签 统计

algorithm ×1

c++ ×1

vector ×1