yaml-cpp与c ++地图的内部工作原理

时间:2013-07-31 09:45:00

标签: yaml yaml-cpp

关于yaml-cpp的内部运作的一个简单问题。

我注意到当我试图查找不存在的密钥时,我收到了一个错误,例如:

yaml-cpp: error at line 0, column 0: bad conversion

我对此感到很惊讶,因为我会假设这一点在加载后我们将直接在内存映射中运行

如果我进行查找,例如

string foo = myyaml["bar"]["foo"].as<string>();

这是否有效,就像我有一个强类型地图一样。如果我将我知道存在于yaml中的东西预先处理成c ++映射并直接访问它们而不是通过节点访问它们会更有效吗?

我想我是在问地图的性能是否比接收节点更快

由于

1 个答案:

答案 0 :(得分:1)

在yaml-cpp中的地图中查找是O(n) - 它遍历地图中的所有条目。请参阅项目页面上的this issue

std::map中的查找是O(log n) - 它按顺序存储密钥,并进行二进制搜索以查找密钥。因此,如果您拥有大量密钥,则预处理数据可能会更快。但你应该先测量一下:)