1

いいタイトル見つけてください


あなたが 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修正できないようです。yz

車輪の再発明はしたくないのですが、良い解決策は何ですか?

  • より現実的なシナリオ:x,y,zジェネリック型 (通常はintstringまたはenum)
  • wより現実的なシナリオ: キー ( ) を簡単に追加したい
  • より難しいシナリオ:MyObjectオブジェクトはソート可能ではありません (はい、x,y,zソートに使用できます)
4

0 に答える 0