我正在考虑在存储之前将每个数据集插入到地图中,但只有在地图中没有找到它才能开始.我最初的想法是有一个字符串的地图,并使用memcpy作为一个锤子强制ints到一个字符数组,然后将其复制到字符串并存储字符串.这是因为我的大量数据包含相关数据前面的0(也称为NULL)的多个字节,所以绝大多数非常实际的数据被抛出.
我的下一次尝试计划是std :: map< std :: vector< unsigned char>,int>,但我意识到我不知道地图插入功能是否工作.
即使有不好的建议,还是有更好的方法来解决这个问题,这是否可行?
编辑
所以有人说我没有清楚我在做什么,所以这里有一个更好的描述.
我正在努力生成一个最小生成树,因为我有一些包含我正在使用的实际结束节点的树.目标是提出选择具有最短长度的树,并覆盖所有结束节点,其中所选择的树最多彼此共享一个节点并且全部连接.我基于二进制决策树的方法,但做出一些改变希望允许更大的并行性.
而不是采用二叉树方法,我选择为每个数据集的无符号整数做出一个位向量,其中位置1中的一个指示包含相应的树.
例如,如果只是树0被包括在5树数据集中,我将从头开始
00001
从这里我可以生成:
00011
00101
01001
10001
然后可以并行处理这些中的每一个,因为它们中的任何一个都不相互依赖.我为所有的单树(00010,00100等)做到这一点,我应该没有花时间正式证明它,能够生成范围(0,2 ^ n)中的所有值一次只有一次.
我开始注意到,许多数据集要比我想象的要长很多,并且启用了一个调试输出来查看所有生成的结果,一个快速的Perl脚本后来确认我有多个进程生成相同的输出.从那时起,我一直在努力解决复制品来自非常少的成功,我希望这将很好地工作,让我验证在没有,有时,3天等待的结果计算.
解决方法
http://en.cppreference.com/w/cpp/container/vector/operator_cmp