gpt4 book ai didi

C++将类对象推送到容器时在堆栈或堆中创建类对象?

转载 作者:行者123 更新时间:2023-11-28 05:06:35 24 4
gpt4 key购买 nike

我已经阅读了这个 SO 问题,When is it best to use the stack instead of the heap and vice versa? ,堆栈似乎有大小限制,所以你不能在堆栈中分配大对象。

我有一些代码,可以将对象推送到容器中,请参阅在线 ide 上的此链接,http://cpp.sh/9xxea

那么,我应该更喜欢一个吗?

void AddPerson(const CPerson& p)
{
std::cout << "push back" << std::endl;
persons.push_back(p);
std::cout << "size " << persons.size() << std::endl;
}
void AddPerson()
{
CPerson cp(10, "kit");
std::cout << "push back" << std::endl;
//I know push_back will copy the element and push the copied object(which is created on heap ?), when function returns, cp will be "freed".
//so this function is better than function AddPerson(const CPerson&) ?
persons.push_back(cp);
std::cout << "size " << persons.size() << std::endl;
}
std::vector<CPerson> persons;

最佳答案

So, should I prefer one to another ?

我建议完全不要单独创建对象。既不是堆栈,也不是堆。直接创建对象到 vector 中:

 persons.emplace_back(10, "kit");

也就是说,CPerson 非常小,您可以在堆栈中容纳数十万(或更少,很大程度上取决于堆栈的大小),所以我不担心是否那个。

关于C++将类对象推送到容器时在堆栈或堆中创建类对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44589680/

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