我开始使用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);
答案 0 :(得分:0)
阿。灯泡时刻。
你不能迭代那样改变的集合,因为erase
调用使当前的迭代器失效。
请参阅此处了解迭代器失效规则:Iterator invalidation rules
相反,确实使用稳定的迭代器:
while (it != myptree.end()) {
if ((*it).second.data.compare(strValueImSearching) != 0)
it = myptree.erase(it);
else
++it;
}