我正在尝试实现一个存储大系列(数亿)类似科学实验结果的存储。实验具有许多离散值属性(如发射点、接收点、发射事件时间、发射点和接收点的温度和高程等)和实验结果(如发射强度、接收强度等)。数据作为一个巨大的输入流输入。
我想设计一个存储结构,允许在几个离散的维度(表示属性)中组织输入数据。我还希望能够获得与某个属性值相关的所有实验结果(例如,"从晶格点#10进行的所有实验"或"在海拔100米处接收发射的所有实验")。这样的选择应该形成一个数组,允许进行一些大规模的处理(比如在这样一个选择的集合上平均结果)。
什么可能是适当的c++数据结构(最好由STL制成),允许如此快速的搜索和组合?我听说我想要的东西与Filter(高阶函数)有关,但我不擅长函数式编程
您描述的问题似乎是数据库的典型用例。如果你有理由不想使用数据库或者只想使用c++的解决方案,也许你可以从流行的DB-s的实现中得到一些想法。例如,一些关系数据库使用B+树。