使用堆栈遍历cpp中树结构的最快方法

时间:2017-02-12 13:50:21

标签: c++ algorithm stack iteration eigen3

我有一个树形结构和一个如何迭代它的运行示例,但由于我是编码时性能的初学者,我想问一下是否有人知道如何让它更快。 Eigen3用于构建向量。

结构:

    struct linkedBoxes{
        std::vector<Vector3r> points;
        std::vector<linkedBoxes*> boxes;
        int sideLength;
    };

算法:

    std::vector<Vector3r> integPoints;

    std::vector<linkedBoxes*> stack;
    stack.push_back(firstBox);

    vector<linkedBoxes*>::iterator iterator = stack.begin();

    while (iterator != stack.end()){
        if((*iterator)->boxes.size() == 0){
            for (int j = 0; j < (*iterator)->points.size(); ++j) {
                integPoints.push_back(point + (*iterator)->points[j]);
            }
        } else {

            for (int k = 0; k < (*iterator)->points.size(); ++k) {
                Vector3r tmpPoint = point + (*iterator)->points[k];
                if(computeDistance(tmpPoint) < 0){
                    const size_t diff = iterator - stack.begin();
                    stack.push_back((*iterator)->boxes[k]);
                    iterator = stack.begin() + diff;
                }
            }
        }

        ++iterator;
    }

Point是赋予函数的向量,computeDistance返回介于-1和1之间的值。 有人知道如何加快速度吗?

布鲁诺

0 个答案:

没有答案