1

请找到更好的标题


如果你知道 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似乎无法修复。yz

我不想重新发明轮子,有什么好的解决方案?

  • 更现实的场景:x,y,z是泛型类型(通常是int,stringenum
  • 更现实的场景:我想w轻松添加键( )
  • 更困难的场景:MyObject对象不是可排序的(是的,我可以用x,y,z它来排序)
4

0 回答 0