C++ c++;带要映射的结构的向量?

C++ c++;带要映射的结构的向量?,c++,vector,struct,stdmap,C++,Vector,Struct,Stdmap,我有一个带这个结构的向量: struct AB { int id, x, y; } x和y是坐标。 向量中的数据如下所示: 内径22 x 53.2 y 8.90 内径22 x 53.3 y 8.91 id 25 x 53.4 y 8.92 您可以看到某些id包含多个坐标。因此,我正在寻找一种以不同形式保存数据的方法。这更适合于进一步处理数据。有人有什么建议吗?这取决于你如何填写和使用数据。如果在开始时一次性加载所有数据,然后仅使用加载的数据,那么实际上保留向量、加载所有数据、根据I

我有一个带这个结构的向量:

struct AB
{
      int id, x, y;
}
x和y是坐标。 向量中的数据如下所示:

  • 内径22 x 53.2 y 8.90
  • 内径22 x 53.3 y 8.91
  • id 25 x 53.4 y 8.92

  • 您可以看到某些id包含多个坐标。因此,我正在寻找一种以不同形式保存数据的方法。这更适合于进一步处理数据。有人有什么建议吗?

    这取决于你如何填写和使用数据。如果在开始时一次性加载所有数据,然后仅使用加载的数据,那么实际上保留向量、加载所有数据、根据ID对其进行一次排序,然后使用排序的向量可能是有益的,因为相邻块具有更好的局部性,因此缓存行为更好(与有序或无序的映射结构相反,有序或无序的映射结构意味着在一个地方到处追逐指针,这对缓存不是很友好)。如果只添加很少的新项,这也可以起作用。请注意,这与基于平衡树的映射具有相同的大O(如果在排序向量中进行二进制搜索),只要排序后不需要添加新项目

    如果频繁添加新项,则可以使用std::multimap(或基于散列的无序映射),或点向量的map/unordered_映射


    决定哪一个更适合您应该基于对当前速度和更改后速度的测量(您通常不希望“改进”版本比原始版本慢).

    你可以使用一个
    多地图
    。哪个更适合进一步处理数据?你说的更合适是什么意思?一旦你有了数据,你需要对数据做什么?例如,我想计算从Id 22到哪个Id 22的距离?你必须更好地解释你的目标,也许可以用更多的例子。
    地图
    where
    id
    不是AB结构的一部分