【发布时间】:2017-12-15 17:58:37
【问题描述】:
有没有办法将QVariant 与QVector 一起使用?
我需要实现一个函数来比较两个向量,例如:
#include <QDebug>
#include <QVector>
#include <QString>
bool compareVectors(QVector<QVariant> vec1, QVector<QVariant> vec2)
{
qDebug() << "Comparing vectors!";
if( vec1 != vec2 )
{
qDebug() << "The vectors are different!";
return false;
}
qDebug() << "The vectors are equal!";
return true;
}
int main()
{
QVector<double> v1;
QVector<double> v2;
v1 << 1 << 2;
v2 << 3 << 4;
QVector<QString> v3;
QVector<QString> v4;
v3 << "1" << "2";
v4 << "3" << "4";
compareVectors(v1, v1);
compareVectors(v3, v4);
return 0;
}
参数传递的两个向量将始终具有相同的数据类型,例如:
compareVectors(QVector<int>, QVector<int>);
compareVectors(QVector<double>, QVector<double>);
compareVectors(QVector<QColor>, QVector<QColor>);
compareVectors(QVector<QString>, QVector<QString>);
当我尝试运行上述代码时,我收到以下错误消息:
错误:没有用于调用“compareVectors”的匹配函数
注意:我使用的是 Qt 5.3。
【问题讨论】:
-
使用
std::vector,而不是QVector。 Qt 容器类是遗留的东西,通常性能比标准容器差,有各种奇怪的怪癖,不再真正维护,甚至 Qt 人都建议不要使用它们,除非 API 边界强迫你这样做。