私なりにコードにするとこんな感じですね。
cpp
1#include <iostream>
2#include <vector>
3#include <string>
4#include <map>
5
6int main(void) {
7 // 元データ
8 std::vector<std::string> key{"foo", "bar", "baz", "qux"};
9 std::vector<int> value{1, 4, 8, 7, 2, 6};
10
11 // 結果を格納する map
12 std::map<std::string, int> assoc;
13
14 // 連想配列を作成
15 {
16 decltype(value)::const_iterator i = std::begin(value);
17 for(auto& key_it : key) assoc[key_it] = *i++;
18 }
19
20 // 結果を表示
21 for(auto& k : assoc)
22 std::cout << k.first << ":" << k.second << std::endl;
23
24 return 0;
25}
複数のイテレータを平行してループするというのは用意されていないのでちょっと不格好な形です。
現在提案されている中には zip_with
というのがあってこれを使えばかなり綺麗に書けるようになるはずです。順当にいけば C++20 に入るかもしれません。
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1035r4.html#zip_with-in-c20