将Vector转换为QJsonArray的最快方法?

时间:2018-03-24 05:01:32

标签: c++ qt vector move qjson

目前,我正在迭代一个向量,以便将其转换为QJsonArray:

QJsonArray toJson(const std::vector<unsigned short>& myVec) {
    QJsonArray result;
    for(auto i = myVec.begin(); i != myVec.end(); i++) {
        result.push_back((*i));
    }
    return result;
}

然而,这导致我的程序中出现小的滞后峰值。是否有另一种方法来接收带有矢量数据的QJsonArray? (它不需要是一个深层拷贝。)

1 个答案:

答案 0 :(得分:3)

恐怕没有比你设计的更快的方法了。 QJsonArrayQJsonValue值组成,可以封装不同类型的原生值:NullBoolDoubleString,... ,Undefined。但std::vector由一种唯一类型的值组成。因此,矢量的每个值都应单独转换为QJsonValue,并且没有像memcopy那样更快的方法。

在任何情况下,您都可以缩短您的功能。

QJsonArray toJson(const std::vector<unsigned short>& myVec) {
    QJsonArray result;
    std::copy (myVec.begin(), myVec.end(), std::back_inserter(result))
    return result;
}