Как проверить, имеет ли вектор векторов все одинаковые значения [дубликаты]

Чтобы проверить, имеет ли вектор все равные значения, я обычно делаю это:

std::vector<bool> myVec(3);

if(std::adjacent_find(myVec.begin(), myVec.end(), std::not_equal_to<>()) == myVec.end()){
    // do if every value is the same
}

Как я могу использовать его, чтобы проверить, имеет ли вектор векторов все равные значения? Это будет так:

 std::vector<std::vector<bool>> my2DVec(3, std::vector<bool>(3));

person akaManen    schedule 04.05.2021    source источник
comment
Сделайте то же самое, но поместите это в цикл   -  person NathanOliver    schedule 05.05.2021
comment
@NathanOliver что-то вроде std::adjacent_find(myVec[i].begin(), myVec[i].end(), std::not_equal_to‹›()) == myVec[i].end() ? obv внутри цикла, который увеличивает i от 0 до 2   -  person akaManen    schedule 05.05.2021
comment
Ага. тогда вам просто нужно отслеживать, является ли какое-либо из них ложным, и если они это делают, возвращайтесь из цикла.   -  person NathanOliver    schedule 05.05.2021


Ответы (1)


вы можете попробовать что-то вроде:

std::vector<std::vector<bool>> my2DVec(3, std::vector<bool>(3));
bool res = std::all_of(my2DVec.begin(), my2DVec.end, [](auto& myVec){
    return std::adjacent_find(myVec.begin(), myVec.end(), std::not_equal_to<>() == myVec.end();
})

это должно проверять, имеют ли все элементы внутри каждого вектора одинаковое значение, но это не гарантирует, что векторы имеют одинаковое значение

person Alberto Sinigaglia    schedule 04.05.2021
comment
@Blastfurnace извините, забыл последнюю часть (кстати, я использую эту функцию, чтобы максимально сохранить код из ОП) - person Alberto Sinigaglia; 05.05.2021