关于yaml-cpp的内部运作的一个简单问题。
我注意到当我试图查找不存在的密钥时,我收到了一个错误,例如:
yaml-cpp: error at line 0, column 0: bad conversion
我对此感到很惊讶,因为我会假设这一点在加载后我们将直接在内存映射中运行
如果我进行查找,例如
string foo = myyaml["bar"]["foo"].as<string>();
这是否有效,就像我有一个强类型地图一样。如果我将我知道存在于yaml中的东西预先处理成c ++映射并直接访问它们而不是通过节点访问它们会更有效吗?
我想我是在问地图的性能是否比接收节点更快
由于
答案 0 :(得分:1)
在yaml-cpp中的地图中查找是O(n)
- 它遍历地图中的所有条目。请参阅项目页面上的this issue。
std::map
中的查找是O(log n)
- 它按顺序存储密钥,并进行二进制搜索以查找密钥。因此,如果您拥有大量密钥,则预处理数据可能会更快。但你应该先测量一下:)