Есть ли способ использовать 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 вынуждают вас. - person Jesper Juhl   schedule 15.12.2017