Просто интересно, что вы считаете лучшей практикой относительно векторов в С++.
Если у меня есть класс, содержащий переменную-член вектора. Когда этот вектор должен быть объявлен:
- "Всеобъектный" векторный член varayable, содержащий значения, т.е.
vector<MyClass> my_vector;
- Указатель на вектор, т.е.
vector<MyClass>* my_vector;
- Вектор указателей, т.е.
vector<MyClass*> my_vector;
- Указатель на вектор указателей, т.е.
vector<MyClass*>* my_vector;
У меня есть конкретный пример в одном из моих классов, где я в настоящее время объявлял вектор как случай 4, т.е. vector<AnotherClass*>* my_vector;
где AnotherClass - это еще один из классов, которые я создал.
Затем в списке инициализации моего конструктора я создаю вектор, используя new:
MyClass::MyClass()
: my_vector(new vector<AnotherClass*>())
{}
В моем деструкторе я делаю следующее:
MyClass::~MyClass()
{
for (int i=my_vector->size(); i>0; i--)
{
delete my_vector->at(i-1);
}
delete my_vector;
}
Элементы векторов добавляются в один из методов моего класса. Я не знаю, сколько объектов будет добавлено в мой вектор заранее. Это определяется, когда код выполняется, на основе анализа XML файла.
Это хорошая практика? Или должен ли вектор быть объявлен как один из других случаев 1, 2 или 3?
Когда использовать какой случай?
Я знаю, что элементы вектора должны быть указателями, если они являются подклассами другого класса (полиморфизм). Но должны ли указатели использоваться в любых других случаях?
Большое спасибо!