我做了这样一对
typedef std::pair<int, Dish> OrderPair;
Run Code Online (Sandbox Code Playgroud)
当Dish是一个对象.我有一个OrderPair的矢量:
std::vector<OrderPair> orderList;
Run Code Online (Sandbox Code Playgroud)
假设我想从向量中删除一对,当我不想从内存中删除菜时,擦除功能是否足够?我认为答案是肯定的,因为创建一对不是坐在堆中,因此我不需要释放任何内存.请告诉我,如果我错了.
当你OrderPair
被删除,那么Dish
它的一部分也消失了.当std::vector<OrderPair> orderList
超出范围(它被声明的函数的结尾等)时,所有OrderPair
内部因此所有内部Dish
也消失了.擦除OrderPair
使用时erase
,那就Dish
消失了.
当我不想从内存中删除菜时,擦除功能是否足够?
如果你打电话erase
,那么OrderPair
那Dish
就是从记忆中消失了.如果那不是你想要的,你需要一个不同的数据结构.例如,如果OrderPair
不包含Dish
但指针指向Dish
,如下所示:
typedef std::pair<int, Dish*> OrderPair;
Run Code Online (Sandbox Code Playgroud)
然后你确实可能erase
那对和Dish
没有从内存中删除,只是一个引用它.但只有那么小的代码片段,很难知道你的意图.
归档时间: |
|
查看次数: |
112 次 |
最近记录: |