三维向量的交叉/可行性控制

时间:2013-10-16 15:51:19

标签: c++ arrays vector

我有一个带有多个元组(元素)的三维向量:

coverFeasible[d][y1].push_back(colIdx)

对于给定的d和y1,我想检查是否有任何元素(coverFeasible [d] [y1] [r1])也是coverFeasible [d] [y1']的元素,其中y1'是其余的元素设置(y1中的所有其他设置)。

更准确地说,我保留了所有可能的可行性,其中第一个元素中的一个元素不是第二个元素(y1的所有组合)。并且,我想对所有可能的d值进行此控制。

如果coverFeasible [d] [y1]和coverFeasible [d] [y1']之间没有共同的元素,那么我想保留它,并且我尝试在所有可行列表中获得最少的参数coverFeasible [d] [Y1]。

我尝试了很多for循环。但是,结果与我想要的不匹配:

for (int d=1 ; d<=n; d++){
    min_feasible_LB_cost[d]=1000; //A Large value
  for (int y1=1; y1<= (qc)*(n)*(sp)*tt; y1++){   //Until all y1s are covered
      for (int y2=y1+1; y2<= (qc)*(n)*(sp)*tt; y2++){
              bool gotoMainLoop = false;
          for (int r1=1; r1 <= coverFeasible[d][y1].size(); r1++){
              for(int r2=1; r2<= coverFeasible[d][y2].size(); r2++){
                  if(coverFeasible[d][y1][r1]==coverFeasible[d][y2][r2])
                      gotoMainLoop = true;
                 else {if(lowerbound_totalcolCost[d][y2] <= min_feasible_LB_cost[d] )  
                       min_feasible_LB_cost[d]=lowerbound_totalcolCost[d][y2];
                     else
                         min_feasible_LB_cost[d]=min_feasible_LB_cost[d];}}}
          break;}
      }
} 

我可以尝试一些交叉的矢量,但我不知道如何用二维矢量做到这一点。

我想提出一些有用的建议。

1 个答案:

答案 0 :(得分:1)

我建议您使用std::set而不是coverFeasible[d][y1]的向量,然后您可以使用set intersection from the std library.

相关问题