шаблон для обработки "базы данных" экземпляров - PullRequest
2 голосов
/ 28 декабря 2011

для моего приложения я загружаю с жесткого диска список различных «элементов»: эти «элементы» являются структурами старых данных и представляют собой окончательный список всех «элементов» в моей программе. Пока что я просто помещаю все десериализованные экземпляры в один большой std :: vector и обращаюсь к ним в остальной части моей программы по указателям. Я не должен иметь никакого объекта "item" где-либо еще, кроме моего std :: vector, который действует как база данных. Есть хороший или специфический шаблон дизайна для этого случая? Я чувствую, что рано или поздно у меня появятся объекты предметов в другом месте, чем в моем std :: vector, или что я использую метод, который слишком прост, чтобы быть устойчивым спасибо

edit: для ясности, я делаю что-то вроде этого (из памяти):

struct Item {
    std::string name;
    int property; //etc
}

class Items {

static std::vector<Item> _list;

static void init() {

    Item new_item = readfromfile(...);
    _list.push_back(new_item)

}

}

1 Ответ

2 голосов
/ 28 декабря 2011

Если вы передаете указатели, std::vector - плохая идея, потому что указатель изменится, когда вектор должен быть перераспределен. Попробуйте использовать boost::ptr_vector и динамическое распределение.

Помимо этого незначительного соображения, простой вектор - это простейшее возможное хранилище, и он так же хорош, как и любой другой, когда итерация является единственной задачей. Я бы посоветовал вам оставаться с ним до тех пор, пока не возникнут другие потребности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...