我有一个带有多个元组(元素)的3维向量:
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;}
}
}
我可以尝试向量的一些交集,但是我不知道如何使用二维向量。
我希望有您的建议会有所帮助。
最佳答案
我建议您为std::set
使用coverFeasible[d][y1]
而不是向量,然后可以使用set intersection from the std library.
关于c++ - 三维 vector 的交点/可行性控制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19408016/