【发布时间】:2021-03-25 20:28:03
【问题描述】:
我正在尝试编写一个程序,该程序接受用户输入并使用它来创建对象,然后将其推送到列表中。这是我所写内容的简化版本:
int main(){
cout << "How many lists? \n";
int numLists;
cin >> numLists;
list<MyObject> objectList;
for(int i = 0; i < numLists; i++){
cout << "Enter some input for list #" << i << "! \n";
int n = 3;
while(n-- != 0){
int input;
cin >> input;
MyObject object(input);
objectList.push_back(object);
}
//Save the newly created list somewhere
}
//Do something with all the created lists
}
一旦循环结束,在循环内创建的对象最终会超出范围,并且列表的大小为零。
我开始使用
list<MyObject> *list = new list<MyObject>
...
MyObject *object = new MyObject(input);
...
(*list).push_back(*object);
它似乎工作正常,但我想知道是否有更好的方法来实现这一点。此外,由于我在创建它们的循环之外使用 list 和 MyObject 的多个实例,我该如何清除内存?
谢谢
【问题讨论】:
-
你写的“简化版”看起来应该没问题。仅仅因为
object超出范围并不意味着添加到objectList的副本确实如此。第一个版本到底有什么问题?