Re[3]: Посоветуйте
От: velkin Удмуртия https://kisa.biz
Дата: 24.06.15 11:07
Оценка:
Здравствуйте, pilot.net, Вы писали:

V>>http://doc.qt.io/qt-4.8/qvariant.html

PN>А вот Qt можно но как ?

Если можно использовать Qt и не нужна бешеная сверх оптимизированная числодробилка, тогда выберите подходящий контейнер, и используйте внутри QVariant. Чисто для примера QVariantList:

http://doc.qt.io/qt-4.8/qvariant.html#QVariantList-typedef

typedef QVariantList
Synonym for QList<QVariant>.


Для выбора оптимального контейнера почитайте 4-ую главу "Библиотека контейнеров" книги Макса Шлее "Qt 4.8 Профессиональное программирование на C++", ну или вот сейчас нагуглил. Разберитесь с классом QVariant, его возможности очень велики, вашу задачу он уже решил причём в лёгкую. То есть не будет ни vector<double>, ни vector<float>, будет всего лишь один QVariantList, или другой контейнер с QVariant (или QVariant обёрнутый в умный указатель), то есть только одна пара accessor/mutator (get/set).

Доступные типы, плюс в конце видно, что можно использовать пользовательские:
  QVariant
QVariant::Invalid 0 no type
QVariant::BitArray 13 a QBitArray
QVariant::Bitmap 73 a QBitmap
QVariant::Bool 1 a bool
QVariant::Brush 66 a QBrush
QVariant::ByteArray 12 a QByteArray
QVariant::Char 7 a QChar
QVariant::Color 67 a QColor
QVariant::Cursor 74 a QCursor
QVariant::Date 14 a QDate
QVariant::DateTime 16 a QDateTime
QVariant::Double 6 a double
QVariant::EasingCurve 29 a QEasingCurve
QVariant::Font 64 a QFont
QVariant::Hash 28 a QVariantHash
QVariant::Icon 69 a QIcon
QVariant::Image 70 a QImage
QVariant::Int 2 an int
QVariant::KeySequence 76 a QKeySequence
QVariant::Line 23 a QLine
QVariant::LineF 24 a QLineF
QVariant::List 9 a QVariantList
QVariant::Locale 18 a QLocale
QVariant::LongLong 4 a qlonglong
QVariant::Map 8 a QVariantMap
QVariant::Matrix 80 a QMatrix
QVariant::Transform 81 a QTransform
QVariant::Matrix4x4 82 a QMatrix4x4
QVariant::Palette 68 a QPalette
QVariant::Pen 77 a QPen
QVariant::Pixmap 65 a QPixmap
QVariant::Point 25 a QPoint
QVariant::PointArray Polygon a QPointArray
QVariant::PointF 26 a QPointF
QVariant::Polygon 71 a QPolygon
QVariant::Quaternion 86 a QQuaternion
QVariant::Rect 19 a QRect
QVariant::RectF 20 a QRectF
QVariant::RegExp 27 a QRegExp
QVariant::Region 72 a QRegion
QVariant::Size 21 a QSize
QVariant::SizeF 22 a QSizeF
QVariant::SizePolicy 75 a QSizePolicy
QVariant::String 10 a QString
QVariant::StringList 11 a QStringList
QVariant::TextFormat 79 a QTextFormat
QVariant::TextLength 78 a QTextLength
QVariant::Time 15 a QTime
QVariant::UInt 3 a uint
QVariant::ULongLong 5 a qulonglong
QVariant::Url 17 a QUrl
QVariant::Vector2D 83 a QVector2D
QVariant::Vector3D 84 a QVector3D
QVariant::Vector4D 85 a QVector4D
QVariant::UserType 127 Base value for user-defined types.

  QMetaType
QMetaType::Void 0 void
QMetaType::Bool 1 bool
QMetaType::Int 2 int
QMetaType::UInt 3 unsigned int
QMetaType::Double 6 double
QMetaType::QChar 7 QChar
QMetaType::QString 10 QString
QMetaType::QByteArray 12 QByteArray
QMetaType::VoidStar 128 void *
QMetaType::Long 129 long
QMetaType::LongLong 4 LongLong
QMetaType::Short 130 short
QMetaType::Char 131 char
QMetaType::ULong 132 unsigned long
QMetaType::ULongLong 5 ULongLong
QMetaType::UShort 133 unsigned short
QMetaType::UChar 134 unsigned char
QMetaType::Float 135 float
QMetaType::QObjectStar 136 QObject *
QMetaType::QWidgetStar 137 QWidget *
QMetaType::QVariant 138 QVariant
QMetaType::QColorGroup 63 QColorGroup
QMetaType::QCursor 74 QCursor
QMetaType::QDate 14 QDate
QMetaType::QSize 21 QSize
QMetaType::QTime 15 QTime
QMetaType::QVariantList 9 QVariantList
QMetaType::QPolygon 71 QPolygon
QMetaType::QColor 67 QColor
QMetaType::QSizeF 22 QSizeF
QMetaType::QRectF 20 QRectF
QMetaType::QLine 23 QLine
QMetaType::QTextLength 78 QTextLength
QMetaType::QStringList 11 QStringList
QMetaType::QVariantMap 8 QVariantMap
QMetaType::QVariantHash 28 QVariantHash
QMetaType::QIcon 69 QIcon
QMetaType::QPen 77 QPen
QMetaType::QLineF 24 QLineF
QMetaType::QTextFormat 79 QTextFormat
QMetaType::QRect 19 QRect
QMetaType::QPoint 25 QPoint
QMetaType::QUrl 17 QUrl
QMetaType::QRegExp 27 QRegExp
QMetaType::QDateTime 16 QDateTime
QMetaType::QPointF 26 QPointF
QMetaType::QPalette 68 QPalette
QMetaType::QFont 64 QFont
QMetaType::QBrush 66 QBrush
QMetaType::QRegion 72 QRegion
QMetaType::QBitArray 13 QBitArray
QMetaType::QImage 70 QImage
QMetaType::QKeySequence 76 QKeySequence
QMetaType::QSizePolicy 75 QSizePolicy
QMetaType::QPixmap 65 QPixmap
QMetaType::QLocale 18 QLocale
QMetaType::QBitmap 73 QBitmap
QMetaType::QMatrix 80 QMatrix
QMetaType::QTransform 81 QTransform
QMetaType::QMatrix4x4 82 QMatrix4x4
QMetaType::QVector2D 83 QVector2D
QMetaType::QVector3D 84 QVector3D
QMetaType::QVector4D 85 QVector4D
QMetaType::QQuaternion 86 QQuaternion
QMetaType::QEasingCurve 29 QEasingCurve
QMetaType::User 256 Base value for user types

QMetaType::Double 6 double
QMetaType::Float 135 float


Тем не менее, шаблоны C++ это наивысшая скорость и экономия памяти, показатели такие же как у оптимизированного кода Си. В данном же случае получаем наивысший комфорт для программиста жертвуя производительностью и количеством затрачиваемой памяти.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.