
At first glance, it looked like the multi_index lib (perhaps combined with the range lib) might provide a convenient way to search for ranges of two+ indicies. For example, points. You have a grid of random points and you want a pair of iterators that contain all points within the cube (x1,y1,z1) and (x2,y2,z2) . I made a multi_index container with a composite key containing all three coords contained within a point class. struct point { int x, y ,z; }; struct coords_key : composite_key< point, member<point,int,x>, member<point,int,y>, member<point,int,z>
{};
struct coords{}; typedef multi_index_container< point, indexed_by< ordered_non_unique<tag<coords>, coords_key>
point_set;
int main() { point_set p; p.insert(point(1,2,2)); p.insert(point(2,3,1)); p.insert(point(1,2,3)); p.insert(point(10,3,2)); point_set::iterator it = p.lower_bound(make_tuple(1,1,1)); point_set::iterator it2 = p.upper_bound(make_tuple(3,3,3)); return 0; } it would be great if [it, it2] contained the first four points, but this is not the case. If I run this code, it == it2 == the first point. Am i barking up the wrong tree? Or is this doable. Cheers, Chris