boost ptree 即时修改一组值
Posted
技术标签:
【中文标题】boost ptree 即时修改一组值【英文标题】:boost ptree modify an array of values on the fly 【发布时间】:2015-05-22 21:18:02 【问题描述】:我开始使用 boost 中的 ptree 和 json 解析器来保存一些快速信息。 问题是我只需要保存一些URI,所以我不关心密钥。 现在我想找到某个值并将其删除。 我该怎么做呢
"MyArray":
[
"value1",
"value2"
]
我无法使用 find()
并且迭代器似乎不起作用。
for (it ; it != myptree.end(); ++it)
if ((*it).second.data.compare(strValueImSearching) != 0)
// the previous line is not valid from .data
myptree.erase(it);
【问题讨论】:
我找到了一种解决方法,但不确定这是最好的方法。 pastebin.com/s2HH2UgS 这实际上说得很清楚。我编辑了令人困惑的标题。 “查询值数组”没有问题。此外,迭代器工作。但没有一次失效。请参阅我的新答案。 【参考方案1】:啊。灯泡时刻。
您不能迭代这样变化的集合,因为erase
调用使当前迭代器无效。
迭代器失效规则见这里:Iterator invalidation rules
相反,确实使用稳定的迭代器:
while (it != myptree.end())
if ((*it).second.data.compare(strValueImSearching) != 0)
it = myptree.erase(it);
else
++it;
【讨论】:
以上是关于boost ptree 即时修改一组值的主要内容,如果未能解决你的问题,请参考以下文章