У меня есть class A
, который не является ни копируемым, ни назначаемым. Теперь я хочу еще class B
провести вектор объектов A
. Также ясно, что B
владеет правами на эти объекты.vector <A> vs vector <A*> vs vector <shared_ptr <A>> in C++
Как я вижу, есть (по крайней мере) три варианта:
- использование
vector<A>
- использование
vector<A*>
- использование
vector<shared_ptr<A> >
Правильно ли это, что: 1. не работать, потому что A
не копируется конструктивно/присваивается?
Мне не нравится 2. потому что я должен убедиться, что снова удалю указатели.
Если я использую 3. Я чувствую, что это не означает, что B
является владельцем объектов A
. Также я столкнулся с проблемой, что, если я хочу, чтобы пользователи B
удалили указатели с этого вектора, им нужно передать элемент, который они хотят удалить, на shared_ptr<A>
, правильно?
В этом случае было бы чистое дизайнерское решение? Есть ли хорошие ссылки на это?
Является ли мобильным? 4. 'std :: unique_ptr', поскольку вы не являетесь владельцем судна. – Jarod42
[std :: vector :: emplace_back] (http://en.cppreference.com/w/cpp/container/vector/emplace_back) – Drop
Что вы хотите сделать с вашим вектором 'A'? Это основной вопрос, который вы должны задать себе перед тем, как выбрать, какой из них является правом на использование. – Holt