2

目前,我正在遍历一个向量以将其转换为 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?(它不需要是深拷贝。)

4

1 回答 1

4

恐怕没有比您设计的更快的方法了。QJsonArrayQJsonValue值组成,可以封装不同类型的本机值: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;
}
于 2018-03-24T05:49:44.997 回答