Предположим, что у меня есть 2 (или более) контейнера, которые я хочу итерации одновременно, например, для вычисления точечного произведения двух векторов:
std::vector<double> vector1;
std::vector<double> vector2; // identical size to vector1
Каков предпочтительный способ С++ 11 указать цикл диапазона для обоих (или всех) контейнеров одновременно? Включает ли это выбор одного контейнера/итератора для записи короткого замыкания (т.е. for ( auto i : c )
) в цикле диапазона, в то время как все остальные контейнеры/итераторы должны обрабатываться долго? Есть ли причина, по которой синтаксис в будущем не может быть расширен для поддержки коротких рук для обоих/всех контейнеров, как показано ниже... что кажется действительно читаемым:
double dotProduct( 0.0 );
for ( auto const & value1 : vector1, auto const & value2 : vector2 ) // illegal!
{
dotProduct += value1*value2;
}