Когда ваш OrderPair
будет удален, то Dish
, который является его частью, также исчезнет. Когда std::vector<OrderPair> orderList
выходит из области видимости (конец функции, в которой он был объявлен и т. Д.), Тогда все OrderPair
внутри и, следовательно, все Dish
в нем также исчезают. Когда вы стираете OrderPair
, используя erase
, то Dish
исчезает.
достаточно ли функции стирания, когда я не хочу удалять блюдо
из памяти?
Если вы позвоните erase
, тогда этот OrderPair
и, следовательно, Dish
исчезнет из памяти. Если это не то, что вам нужно, вам нужна другая структура данных. Например, если OrderPair
не содержит Dish
, а указатель на Dish
, например:
typedef std::pair<int, Dish*> OrderPair;
Тогда вы действительно можете erase
, чтобы эта пара и Dish
не были удалены из памяти, только одна ссылка на нее. Но с помощью этого небольшого фрагмента кода трудно понять ваши намерения.