2013-11-10 3 views
-1

Я пытаюсь написать код для сравнения векторов по элементам. Так сказать, у меня было три Int векторов:Сравнение различных векторов

v1 = 1,2,3,4,5,6,7,8,9,10

v2 = 1,2,3,4,5,6 , 7,8,9,10

v3 = 1,2,3,4,5,6,7,8,9,10

И я хотел сравнить три поэлементно - поэтому сравните v1 [0], v2 [0], v3 [0]. Тогда v1 [1], v2 [1], v3 [1] и т. Д. Как это возможно в C++? Я не могу найти нигде в Google, который, похоже, способен это сделать. Может быть, я должен просто сделать векторы 2d массивом и работать с cols?

Thanks, Ben.

+0

Что вам нужно сделать после трехстороннего сравнения? Сравнение легко - 'std :: vector' обеспечивает реализацию '<' оператора. – dasblinkenlight

+0

Угадайте, основываясь на ваших знаниях о том, как обычно сравниваются другие вещи на этом языке. –

+2

Что вы подразумеваете под "compare vectors"? Означает ли порядок? И почему простой цикл не выполняет то, что вам нужно? – rangu

ответ

0

Попробуйте это:

bool vectors_are_equal = false; 
const unsigned int size = v1.size(); 
for (unsigned int i = 0; i < size; ++i) 
{ 
    if ((v1[i] == v2[i]) && (v2[i] == v3[i])) 
    { 
    continue; 
    } 
    else 
    { 
    break; 
    } 
} 
if (i >= size) 
{ 
    vectors_are_equal == true; 
} 
0

Thomas Matthews, ваш код не компилируется. Вот рабочий пример:

bool areVectorsEqual(const std::vector<int>& v1, const std::vector<int>& v2, const std::vector<int>& v3) { 
    if (v1.size() != v2.size() || v2.size() != v3.size()) { 
    return false; 
    } 

    for (int i = 0; i < v1.size(); i++) { 
    if (v1[i] != v2[i] || v2[i] != v3[i]) { 
     return false; 
    } 
    } 

    return true; 
} 

Вы можете улучшить это, чтобы можно было сравнивать n число векторов.

Смежные вопросы