У меня есть набор из примерно 150 переменных, которые могут иметь различный тип (double, bool, array). Этот набор переменных мне нужно упаковать в QVector. Из-за переменных типа переменных я думал об использовании QVariant. Пока это мой дизайн. Я не уверен, что это производительность + механизм поиска myVariables.QVector with struct - performance + best practice
enum class VariableEnums{
VAR1,
VAR2,
VAR3
};
struct myVariable{
VariableEnums var;
QVariant value;
};
QVector<myVariable> myVariables;
Идея состоит в том, что myVariables будут отправлены на несколько модулей. Каждый модуль найдет определенную переменную и обновит некоторую другую переменную. Таким образом, один модуль может обновлять переменную, которая будет использоваться другим модулем. До сих пор по поиску определенной переменной я могу думать только следующее:
foreach(myVariable *myVar, myVariables{
if(myVar->var == VariableEnums::VAR1){
//......
continue;
}
}
Есть ли еще более эффективный способ сделать это? Я мог бы использовать indexOf, но я не уверен, как использовать его со структурой.
спасибо, m.
Вы должны профиль его. Таким образом, вы будете знать эффективность этого выбора в своей системе. Это также возможность построить 'QVector', 'QVector ', ... и передавать их по мере необходимости. Кажется, что ваш код страдает от амнезии, потому что вы знали, что тип забыл об этом. –
andre
Соединяете ли вы отдельный тип с каждым из VAR1-VAR3? Если да, почему бы просто не сохранить три отдельных списка значений и работать только с значениями в определенной категории? Это не только избавит вас от поиска в гетерогенном контейнере, но также устранит накладные расходы QVariant во время выполнения. Если вам абсолютно не нужен один гетерогенный контейнер, конечно. – thokra