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

Gri*_*ort 3 c++ qt move vector 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;
}
Run Code Online (Sandbox Code Playgroud)

然而,这会导致我的程序出现轻微的滞后峰值。是否有其他方法可以接收带有向量数据的 QJsonArray?(它不需要是深拷贝。)

S.M*_*.M. 5

恐怕没有比你设计的更快的方法了。QJsonArray由值组成QJsonValue,可以封装不同类型的本机值:Null, Bool, Double, String, ..., 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;
}
Run Code Online (Sandbox Code Playgroud)