Мы будем использовать версию std :: transform , которая принимает 2 входные последовательности.(Не так хорошо известно, что он выглядит как тот, который занимает одну последовательность).
Вы можете передать std::make_pair<v1::value_type, v2::value_type>
как ваш преобразователь (op), таким образом, в вашем случае
std::vector<int> vec1, vec2;
std::map< int, int > mergedMap;
std::transform( vec1.begin(), vec1.end(), vec2.begin(),
std::inserter(mergedMap, mergedMap.end() ), std::make_pair<int const&,int const&> );
IЯ протестировал код, и он прекрасно компилируется с GNU 4.3.2
(я также тестировал сейчас с C ++ 11. Он работает, когда я изменил make_pair, чтобы принимать int const & вместо int).1012 * Если две входные последовательности имеют разную длину, будет хорошо, если первая короче, а более поздние элементы во второй последовательности будут игнорироваться.Если первое длиннее, оно будет вызывать неопределенное поведение.