какой контейнер STL использовать для взаимосвязанных данных? - PullRequest
2 голосов
/ 20 июня 2011

Прежде всего, это игровой проект.

Мне нужно иметь объекты с именем Skill, которые содержат их строковое имя, некоторые другие члены и член, который является набором других объектов Skill, называемых "требования".(Это будет список предварительных навыков, необходимых для данного навыка)

В какой контейнер STL я должен поместить набор всех объектов навыков?вектор?задавать?карта?
Этот контейнер также будет использоваться в качестве типа элемента "требования"?

Навыки должны быть уникальными.
Что касается того, что я буду делать с набором Навыков- поиск по имени, в основном комбинирование наборов навыков и добавление навыков к набору.

Ответы [ 2 ]

9 голосов
/ 20 июня 2011

Вы определяете требования к контейнерам не по тому, что они должны содержать, а по тому, какие операции будут общими и как быстро они должны работать.

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

Редактировать: Вот оно: В каком сценарии я использую определенный контейнер STL?

1 голос
/ 20 июня 2011

Навыки должны быть уникальными.

Первое впечатление утверждает, что вы должны использовать map или set.Но это снижает гибкость «поиска» в коллекции.Я бы просто начал с vector, поместил бы этот вектор в какой-нибудь класс.Этот класс будет иметь AppendSkill и будет проверять, если Skill уже существует.Если не добавить или вернуть false / неудачу.

Один и тот же класс должен облегчить комбинирование и добавление навыков / набора навыков.

...