#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;