Я хочу, чтобы создать карту устройств таким образом, что карта содержит:QMap вставить QVector <QString> указателем или значением?
QString «DeviceID» и QVector «список команд»
В настоящее время у меня есть QMap следующим образом:
QMap<QString, QVector<QString> *> devices;
QVector<QString> *pCommands= new QVector<QString>;
// :
// Fill pCommands with lots of data here
// :
devices.insert(RadioID, pCommands);
Но мне интересно, если это на самом деле лучше тогда:
QMap<QString, QVector<QString>> devices;
QVector<QString> commands;
// :
// Fill commands with lots of data here
// :
devices.insert(RadioID, commands);
Я уверен, что я где-то читал, что Qt делает что-то весьма эффективным при копирование данных. Я не вижу много людей, использующих указатели с Qt, и кажется бесполезным, что я должен пройти QMap, удалив все QVector в конце ...
Я использую C++ 11, поэтому, возможно, какой-то шаг семантика может работать здесь?
EDIT Я изменил комментарии в коде, чтобы показать, что вектор не пуст. Также я бы сказал, что мне не нужно менять данные после их сохранения.
Если у вас нет конкретной причины использовать указатели, я бы избегал их. – NathanOliver
@NathanOliver Пытается сэкономить память:) –
Вы собираетесь использовать память независимо от того, используете ли вы ее. Если вы собираетесь «делиться» ими, вы должны посмотреть на общий указатель, который будет управлять указателем. – NathanOliver