将rapidjson :: Value的元素复制到std :: vector

时间:2015-01-07 08:20:18

标签: c++ stl rapidjson

我需要一个函数,将rapidjson::Value的所有成员作为std::vector返回。我试图避免每次需要时用ifIsArray()。不幸的是,以下代码不起作用。

std::vector<const rapidjson::Value&> valueToList(const rapidjson::Value& value)
{
    std::vector<const rapidjson::Value&> valueList;

    if (value.IsArray())
    {
        for (rapidjson::SizeType i = 0; i < value.Size(); i++)
        {
            valueList.push_back(val[i]);
        }
    }
    else
    {
        valueList.push_back(val);
    }

    return valueList;
}

我收到错误 push_back含糊不清。有没有一种简单的方法来克服这个问题?感谢。

2 个答案:

答案 0 :(得分:2)

std :: vector向量必须是可赋值的,因此你不能拥有const引用的std :: vector。相反,尝试存储 rapidjson :: Value 或指向它们的指针。如果您确实想存储引用,请查看 std :: reference_wrapper

从第23.2.4节C ++标准的类模板向量:

  

......存储的对象应满足Assignable的要求。

答案 1 :(得分:0)

你做不到。存储指向Value的指针,你会没事的。确保不要丢失rapidjson::Document