как сравнить индекс двух векторов по индексу, содержащемуся в shared_ptr

#c #for-loop #shared-ptr

#c #for-цикл #shared-ptr

Вопрос:

У меня есть два общих указателя на вектор строк: b_paras и b_paras_sig

Я прошел цикл для каждого, используя for цикл на основе диапазона следующим образом:

 for ( const std::string amp;para1 : *b_paras )
 

и

 for ( const std::string amp;para2 : *b_paras_sig)
 

Теперь я хочу сравнить каждый элемент этих векторов, индекс по индексу и выяснить несоответствие.

Я думаю, что вложенный цикл может не подойти в качестве решения здесь.

Есть ли какой-нибудь способ решить эту проблему?

Заранее спасибо.

Комментарии:

1. std::mismatch ?

Ответ №1:

В C нет элегантного способа сделать это, AFAIK.
В Python есть несколько функций zip() для одновременного перебора нескольких последовательностей, а Boost имеет эквивалент: https://www.boost.org/doc/libs/1_75_0/libs/iterator/doc/zip_iterator.html

В противном случае просто сделайте что-то вроде

     for(auto it = std::make_pair(a->begin(), b->begin()); 
        it.first != a->end() amp;amp; it.second != b->end();
          it.first,   it.second) {
            if (*it.first != *it.second) return false;
        }
    }
    return true;