C向量中向量的动态分配?
发布时间:2020-12-16 10:30:24 所属栏目:百科 来源:网络整理
导读:我现在正在使用矢量,我有一个有趣的情况,我需要帮助. 我有一个矢量矢量,定义如下: vector vectorint list; 我使用cin从标准输入加载数字helpVar;每当我得到0(零)时,我想创建一个新的int向量,它将被放入这个“主容器”列表中. 当然我不知道零号会出现多少次
我现在正在使用矢量,我有一个有趣的情况,我需要帮助.
我有一个矢量矢量,定义如下: vector< vector<int> > list; 我使用cin>>从标准输入加载数字helpVar;每当我得到0(零)时,我想创建一个新的int向量,它将被放入这个“主容器”列表中. 当然我不知道零号会出现多少次 – 这是用户所依赖的.所以我也不知道,程序会添加多少向量. 但我不知道,究竟是怎么做到的.如果我使用C#或其他类似垃圾收集的语言,我可能会写: if(helpVar == 0) { list.push_back(new vector<int>); } 但这种结构在C中不起作用. 所以我的问题是,我应该如何应对这种情况才能使其发挥作用?或者我只是想错了,它应该以另一种方式完成? 谢谢你的回答. 解决方法list.push_back(vector<int>()); vector< int>()创建一个临时向量< int> object并初始化它(即,它调用该对象的默认构造函数).然后push_back将该临时对象复制到列表中. 在C#(和“其他垃圾收集语言”)中,new用于创建新对象,其生命周期由垃圾收集器控制. 在C中,new仅用于动态分配对象(并且您负责通过使用智能指针来管理其生命周期).语法T()(其中T是类型的名称)用于创建临时对象. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |