Добрый день
Есть простецкий член класса
C++ (Qt)
struct CMaterial {
...
std::vector<int> mIndex;
...
};
И вот обнаружилось что "иной раз" этот mIndex интенсивно повторяется и жрет немало RAM и раздувает файлы данных (> 1 Gb). Напрашивается его "зашарить", причем хотелось бы это сделать "малой кровью", проблема возникает далеко не всегда.
Используй QVector вместо std::vector - и будет тебе счастье
[off]
Давая такие ответы человек полагает что "шлифует свое мастерство"
, но это рано или поздно проходит, и он покидает форум
[/off]
Ну хорошо, допустим имплисит шара мне автоматом "расшарит", пусть придется отследить [] и at(). А как "вернуть взад" при undo? И как писать/читать из файлов/потоков избегая "дубляжа"? А если std::shared_ptr ("Qt только для UI") то я не имею даже авто-расшаринга. Придется городить какую-то свою систему. Конечно это не так уж сложно, но это же "в чистом виде" велик, где же общность? Или возможны "более солидные" решения?
Другой вопрос, который я бы тоже охотно пообсуждал: а не "мелкотравчатый" ли этот подход? Очевидно что дублируется вся структура CMaterial, вот ее и надо шарить! Тут я не знаю как, потому что CMaterial имеет разнообразные члены ссылки/ID на владельца, которые у копий не равны.
Спасибо