相关疑难解决方法(0)

在C++中执行向量交集

我有一个无符号矢量矢量.我需要找到所有这些无符号向量的交集,这样做我写了下面的代码:

int func()
{
   vector<vector<unsigned> > t;
   vector<unsigned> intersectedValues;
   bool firstIntersection=true;
   for(int i=0;i<(t).size();i++)
   {
       if(firstIntersection)
       {
           intersectedValues=t[0];
           firstIntersection=false;
       }else{
           vector<unsigned> tempIntersectedSubjects;                                                              
           set_intersection(t[i].begin(),
                  t[i].end(), intersectedValues.begin(),
                  intersectedValues.end(),
                  std::inserter(tempIntersectedSubjects, tempIntersectedSubjects.begin()));
           intersectedValues=tempIntersectedSubjects;
       }         
       if(intersectedValues.size()==0)
           break;
   }               
}
Run Code Online (Sandbox Code Playgroud)

每个单独的向量具有9000个元素,并且在"t"中存在许多这样的向量.当我分析我的代码时,我发现set_intersection占用了最大的时间,因此当有很多fun​​c()调用时,代码会变慢.有人可以建议我如何使代码更有效.

我正在使用:gcc(GCC)4.8.2 20140120(Red Hat 4.8.2-15)

编辑:对矢量"t"中的各个矢量进行排序.

c++ gcc vector c++11

5
推荐指数
1
解决办法
1650
查看次数

标签 统计

c++ ×1

c++11 ×1

gcc ×1

vector ×1