gpt4 book ai didi

c++ - 是否需要删除包含对象的 "pair"?

转载 作者:太空狗 更新时间:2023-10-29 20:01:46 27 4
gpt4 key购买 nike

我做了一个这样的一对

typedef std::pair<int, Dish> OrderPair;

当 Dish 是一个对象时。我得到了一个 OrderPair vector :

std::vector<OrderPair> orderList;

假设我想从 vector 中删除一对,当我不想从内存中删除盘子时,删除功能是否足够?我认为答案是肯定的,因为创建一对不在堆中,因此我不需要释放任何内存。如果我错了,请告诉我。

最佳答案

当您的 OrderPair被删除,然后是 Dish那是它的一部分也不见了。当std::vector<OrderPair> orderList超出范围(声明函数的结尾等)然后所有 OrderPair在所有 Dish 内那里也不见了。当你删除 OrderPair使用 erase , 那么 Dish没了。

does erase function is enough when I don't want to delete the dish from memory?

如果您调用 erase , 那么 OrderPair因此 Dish从内存中消失了。如果那不是你想要的,你需要一个不同的数据结构。例如如果 OrderPair不包含 Dish而是指向 Dish 的指针,像这样:

typedef std::pair<int, Dish*> OrderPair;

那么你确实可以erase那对和Dish并没有从内存中删除,只是对它的引用。但是仅凭那一小段代码,就很难知道您的意图。

关于c++ - 是否需要删除包含对象的 "pair"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53151633/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com