Хотя это кажется довольно простым, я не уверен в самом эффективном способе сделать это.
У меня есть два вектора:
std::vector<bool> a;
std::vector<int> b;
a.size()
обязательно равно b.size()
.
каждый bool в a
соответствует int в b
.Я хочу создать функцию:
bool test(std::vector<bool> a, std::vector<int> b);
Эта функция возвращает true
, если значения в a
равны.Тем не менее, он учитывает только значения в a
, которые соответствуют true
значениям в b
.
Я мог бы сделать это:
bool test(std::vector<int> a, std::vector<bool> b){
int x;
unsigned int i;
for(i = 0; i < a.size(); ++i){
if(b.at(i) == true){
x = a.at(i);
break;
}
}
for(i = 0; i < a.size(); ++i){
if(b.at(i) == true){
if(a.at(i) != x){
return false;
}
}
}
return true;
}
Но тогда мне нужно создать два цикла,Хотя первый цикл остановится на первом истинном значении, есть ли лучший способ?