目前,我正在迭代一个向量,以便将其转换为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? (它不需要是一个深层拷贝。)
答案 0 :(得分:3)
恐怕没有比你设计的更快的方法了。 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;
}