加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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是类型的名称)用于创建临时对象.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读