用于在C ++中组合多个非常大的栅格数据文件的STL容器

时间:2012-07-27 19:34:13

标签: c++ gis raster

我正在开发一段代码,需要做一些非常类似于C / C ++中ArcGIS中的组合功能的代码。请参阅: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,但我不确定这是否正确,以及我是否会获得我需要的性能。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

是的,std :: map或std :: unordered_map是正确的选择。如果您不需要订单,unordered_map会更快,更紧凑。如果您需要更快的内容,可以将其替换为other map implementation

对密钥使用紧凑的东西,比如std :: tuple或std :: array。