改进代码以找到n个向量的交集

时间:2017-09-07 15:15:45

标签: c++

我的代码现在:

#include <algorithm>
#include <iterator>
#include <string>
#include <vector>
using namespace std;

void FindIntersection(vector<vector<string>>& data)
{
    while (data.size() > 1)
    {
        auto lastVec = data.size() - 1;
        vector<string> result;
        std::set_intersection(data[0].begin(), data[0].end(),
                              data[lastVec].begin(), data[lastVec].end(),
                              std::back_inserter(result));
        data[0] = result;
        data.resize(lastVec);
    }
}

这会将输入缩小为单个向量,然后使用data [0]进行访问。代码有效,但我不喜欢赋值data[0] = result;,因为向量复制,尤其是string的复制并不是最有效的。有任何想法如何改进此代码?

P.S。我知道这种优化现在没有现实世界的好处,但我很想知道它能获得多少好处。

0 个答案:

没有答案