Я пытаюсь сравнить два вектора, которые имеют размер, кратный 4, и данные представлены в виде блоков (4 элемента). Каждый векторный блок имеет уникальный номер, например, {0,0,0,0}, {0,0,0,1}, {0,0,0,2} или {0,0,0,0,0, 0,0,1,0,0,0,2} и {0,0,0,2,0,0,0,1} и т. Д. Я использую итератор, который увеличивает i + = 4 каждый раз. Я написал небольшую функцию, которая выполняет работу, но блоки имеют тенденцию повторяться. Я не уверен, как удалить повторение этих блоков. например, vector_A {0,0,0,0,0,0,0,1} vector_B {0,0,0,1,0,0,0,0,0,0,0,2} он должен дать local_vector1 { 0,0,0,2} вместо этого я получаю локальный вектор_1 {0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,2}
void comparing_vectors_by_block(std::vector<int> vector_A, std::vector<int>
vector_B)
{
const int blockSize = 4;
std::vector<int> local_vector1;
std::cout << "size of the vector_A: " << vector_A.size() << std::endl;
std::cout << "size of the vector_B: " << vector_B.size() << std::endl;
for (auto it_A = std::begin(vector_A); it_A != std::end(vector_A); it_A+=4)
{
for (auto it_B = std::begin(vector_B); it_B != std::end(vector_B); it_B += 4)
{
bool match = equal(it_A, it_A + blockSize, it_B, it_B + blockSize);
if (!match)
{
std::cout << "match :" << std::endl;
local_vector1.insert(local_vector1.end(), it_B, it_B + blockSize);
}
else
{
std::cout << "not matched :" << std::endl;
}
}
}