这段代码在 C++ 中是否正确?
list<int> makelist(int litem)
{
list<int> newList;
newList.push_front(litem);
return newList;
}
按值返回列表(的#include <list>
)是否会产生问题?
这段代码在 C++ 中是否正确?
list<int> makelist(int litem)
{
list<int> newList;
newList.push_front(litem);
return newList;
}
按值返回列表(的#include <list>
)是否会产生问题?
它会起作用,但效率不高,因为可能会复制大量内存。在下一个 C++ 标准中,这个问题可以得到解决。我建议以下代码:
void fillList(list & lst) {
lst.push_front(...);
}
....
list newList;
fillList(newList);
正如所评论的,按值返回通常会被优化掉(在打开优化的情况下运行时)。因此,如果速度是问题(在分析器证明它之前不应该),你不应该担心。另一方面,如果 list 在复制时有一些奇怪的副作用,您应该知道复制构造函数调用的数量会因编译器和设置而异。
您不能返回不是简单类型(int、float、char)的本地对象,但可以返回指向新对象的指针:
list<int>* makelist(int litem)
{
list<int>* newList = new list<int>();
newList->push_front(litem);
return newList;
}
注意您必须管理后者以避免内存泄漏。