目前,我正在遍历 vector ,以将其转换为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;
}

但是,这会导致我的程序中出现小的延迟尖峰。是否有其他方法可以从 vector 中接收带有数据的QJsonArray? (它不必是深拷贝。)

最佳答案

恐怕没有比您设计的方法更快的方法了。 QJsonArrayQJsonValue值组成,可以封装不同类型的本机值:NullBoolDoubleString,...,Undefined。但是std::vector由一种唯一类型的值组成。因此, 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;
}

09-04 13:07