将 Vector 转换为 QJsonArray 的最快方法?
Fastest way to convert Vector to QJsonArray?
目前,我正在迭代一个向量,以便将其转换为 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? (不需要是深拷贝。)
恐怕没有比您设计的方法更快的方法了。 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;
}
目前,我正在迭代一个向量,以便将其转换为 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? (不需要是深拷贝。)
恐怕没有比您设计的方法更快的方法了。 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;
}