Даже один цикл for()
не требует печати этих контейнеров. Если вы используете std::copy
следующим образом,
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
int main(int , char *[])
{
std::vector< int> a{ 1, 2, 3};
std::vector< int> b{ 4, 5, 6};
std::copy( a.begin(), a.end(), std::ostream_iterator< int>( std::cout, " "));
std::copy( b.begin(), b.end(), std::ostream_iterator< int>( std::cout, " "));
std::cout<< std::endl;
return 0;
}
вывод: 1 2 3 4 5 6
Лучше всего использовать библиотеку stl, и для печати контейнера не требуется писать код.
По вашему вопросу Я не хочу писать два цикла for и дублировать код внутри цикла. Есть ли способ перебрать повторяемый b с одним циклом for?
Способ избежать дублирования кода - это написать функции, которые можно использовать из нескольких мест, например, если вы не хотите использовать std::copy
и хотите написать свой собственный код для печати этих контейнеров (что не рекомендуется) тогда вы можете написать следующую функцию,
template< typename ForwardIterator>
void print( ForwardIterator begin, ForwardIterator end, const std::string& separator)
{
while( begin != end)
{
std::cout<< *begin<< separator;
++begin;
}
}
затем вызовите print
функцию,
print( a.begin(), a.end(), std::string( " "));
print( b.begin(), b.end(), std::string( " "));