В C ++ есть ли способ применить функцию «одновременно» ко всем элементам вектора? - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть вектор длины 6 с элементами либо 1, либо ноль.Я хочу применить 'XOR' к 2 элементам с обеих сторон каждого i-го элемента.например, для i = 1, я буду применять xor к 0-му и 2-му элементу.элемент ih затем заменяется на этот вывод xor.Я хочу применить xor для всех таких я одновременно на исходном векторе.Есть ли способ, которым я могу достичь этого без использования другого вектора?

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

использовать временную переменную для хранения предыдущего элемента:

bool prev = vec[0];
for(int i = 1; i < vec.size() - 1; i++){
    bool result = vec[i + 1] ^ prev;
    prev = vec[i];
    vec[i] = result;
}
0 голосов
/ 24 декабря 2018

Когда вы говорите «одновременно», вы имеете в виду, что одна операция XOR не должна использовать промежуточные данные из предыдущей операции XOR, а данные из исходного вектора, верно?В этом случае, поскольку каждый шаг стирает информацию (предыдущее состояние элемента i перезаписывается с результатом), вы не можете сделать это без хотя бы некоторого промежуточного хранилища.Однако вы стираете только один бит информации, и эта информация требуется только на следующем шаге, поэтому вам не нужен полный дополнительный вектор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...