请找到更好的标题
如果你知道 Mathematica,我想做一些与此相关的事情:
m = {{a, b, c}, {d, e}, {f, g, h}};
m[[All, 2]] (* returns: {b, e, g} *)
假设我有一些对象,它们排列在 N 维网格上,比如说 3D 并调用维度x,y,z
。此外x,y,z
,还有对象的属性,每个对象与对象之间存在 1-1 关系(x,y,z)
。
现在我想在一个方向上迭代一个容器,用迭代器接口保持其他两个属性固定,例如:
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
它来排序)