2

我正在编写一段代码,该代码需要在 C/C++ 中执行与 ArcGIS 中的 combine 函数非常相似的操作。请参阅:http ://webhelp.esri.com/arcgisdesktop/9.3/index.cfm?TopicName=Combining%20multiple%20rasters

C++ 代码将以块的形式读取多个非常大的栅格数据文件 (2GB+),找到唯一的组合并输出到单个地图。例如,如果有 3 个地图并且 <1,3,5> 存在,恭敬地,在三个地图的第一个单元格中,那么我希望 <1,3,5> 的所有后续实例在最后一个具有相同的键输出地图。

我应该使用哪些 STL 容器来存储地图?分块读取文件肯定会增加项目的复杂性。该算法需要非常快,因此我不能使用具有 O(n) 复杂度的向量进行搜索。目前,我正在考虑使用 unsorted_multimaps 的 unsorted_map,但我不确定这是否正确以及是否能够获得所需的性能。

有什么想法吗?

4

1 回答 1

1

是的,std::map 或 std::unordered_map 是正确的选择。如果您不需要订单,unordered_map 会更快更紧凑。如果您需要更快的东西,您可以将其替换为其他地图实现

使用紧凑的键作为键,例如 std::tuple 或 std::array。

于 2012-07-28T00:11:48.363 回答