在使用地图以分层方式组织数据时,我已经习惯了 Python 的开发思维方式。它很简单,语法上也很便宜。虽然在 C++ 中不是非常困难,但嵌套映射/集合使组织变得困难。我不认为我在考虑这个问题。
例如,我使用以下组织:
typedef set<Motif> Motifs;
typedef map<Motif, Motifs> LinkedMotifs;
struct Candidates {
Motifs deadend;
Motifs intralinked;
LinkedMotifs interlinked;
};
typedef map<Linker::shp, Candidates> LinkedCandidates;
出于性能原因,我使用了 boost 的 flat_map/set 实现。Motif 是一个 std::pair 结构。Linker::shp 是一个 SharedPtr。
该地图是搜索功能的结果。搜索完成后,我对结果进行评分,并在一个单独的函数中将结果写入文件。我在设计项目时考虑到了函数式编程,最初的尝试是将候选结构和分数结构分开。然而,这产生了问题,因为我基本上最终在内存中重新创建了所有映射结构。当所有内容都写入磁盘时,结构很重要。
我可以将分数链接到地图和集合中的迭代器,但老实说,我似乎让事情变得太难了。
谢谢!
*经过编辑以使我的最终目标更有意义。