0

只是一个关于 yaml-cpp 内部工作的快速问题。

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

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

我对此感到惊讶,因为我会假设到此时加载后我们将直接在内存映射中进行操作

如果我进行查找,例如

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

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

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

谢谢

4

1 回答 1

1

在 yaml-cpp 中的地图中查找是O(n)- 它遍历地图中的所有条目。在项目页面上查看此问题。

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

于 2013-07-31T13:11:36.803 回答