私はstd::map<std::string, std::vector<int>>
を持っています。同じタイプの変数をとる関数にそのマップの「ビュー」を提供する方法はありますか?具体的には、マップ内のベクトルをスライスする方法はありますが、std :: mapインタフェースに準拠したビュー(スライス)を提供していますか? boost
範囲アダプタまたはインデックスと似ていますが、ネストされた構造のものです。マップ内のスライスベクトル
私は主にboost
で何かを探していますが、私は他の提案も公開しています。
[UPDATE]目的は、マップをコピーまたは移動しないようにすることです。スライス基準に従ってベクトルにアクセスするだけです。マップを変数として取る関数は、スライスを意識してはいけません。これが問題をより明確にすることを願っています。
ここで擬似例です:
map<string, vector<int>> my_map;
my_map["a"] = {0,1,2,3,4,5};
my_map["b"] = {0,1,2,3,4,5};
my_map["c"] = {0,1,2,3,4,5};
map<string, pair<int>> slices;
slices["a"] = {1,4};
slices["b"] = {2,3};
slices["c"] = {0,5};
map_view = magic(my_map, slices);
cout << "a: " << print_vector(map_view["a"]) << endl;
cout << "b: " << print_vector(map_view["b"]) << endl;
cout << "c: " << print_vector(map_view["c"]) << endl;
//desired output
a: 1,2,3
b: 2
c: 0,1,2,3,4
なぜダウン投票?その質問についてはっきりしないものは何ですか? – John
あなたはboost :: interval_setが好きかもしれません - しかし、与えられたように、あなたのサンプルはあなたが望むものを表示しませんので、私は助言しません – sehe