いいタイトル見つけてください
あなたが Mathematica を知っているなら、私はこれに関連した何かをしたい:
m = {{a, b, c}, {d, e}, {f, g, h}};
m[[All, 2]] (* returns: {b, e, g} *)
いくつかのオブジェクトがあり、それらが N 次元のグリッドに配置されているとしますx,y,z
。さらにx,y,z
、オブジェクトのプロパティもあり、every(x,y,z)
とオブジェクトの間には 1 対 1 の関係があります。
ここで、コンテナを一方向に繰り返し処理し、他の 2 つのプロパティをイテレータ インターフェイスで固定したままにします。たとえば、次のようにします。
Container<MyObject> container;
...
container::iterator it1 = container.begin(undefined, 1, 2);
container::iterator it2 = container.end(undefined, 1, 2);
// now the range [it1, it2] contains all the objects with y=1 and z=2
// ordered by x
私は見てきましたが、私の例ではboost::multi_index_container
修正できないようです。y
z
車輪の再発明はしたくないのですが、良い解決策は何ですか?
- より現実的なシナリオ:
x,y,z
ジェネリック型 (通常はint
、string
またはenum
) w
より現実的なシナリオ: キー ( ) を簡単に追加したい- より難しいシナリオ:
MyObject
オブジェクトはソート可能ではありません (はい、x,y,z
ソートに使用できます)