C++中的动态数组(指针数组还是新数组?
Dynamic Arrays in C++ (Array of pointers or new array?)
如果我想创建一个对象的动态数组:
我可以使用 new 关键字创建一个数组,其中C++将自动创建一个节点对象数组并调用所有节点的默认构造函数。
node* nodes = new node[10];
或者我可以创建一个指向节点的指针数组并单独实例化节点。
node* nodes[10];
for (int i = 0; i < 10; i++)
{
nodes[i] = new node();
}
什么时候使用它们都合适?在第一个示例中,将 new 关键字与数组一起使用时,节点是否仍会动态分配?
非常感谢!
在这两个代码片段之间有很大的不同。
在第二种情况下,即使用以下定义时
node* nodes[10];
不能向数组添加新元素。数组具有固定大小。
在第一种情况下,当您对整个数组使用运算符 new 时
node* nodes = new node[10];
数组可以使用任意数量的元素重新分配。
因此,主要标准是是否需要固定大小的数组,底层类是否具有默认构造函数。
它们的创建方式没有区别,除了第一个表达式用于分配内存以包含 node
类型的单个元素这一事实。第二个用于分配类型为 node
的元素块(数组)。创建对象的动态数组会动态分配每个对象,而不管您创建它们的方式如何。两者之间唯一的明显区别是您是否真的需要单独对新创建的节点执行其他操作。
For **Dynamic Allocation** we can use Vector in C++
int main()
{
vector<int> v1;
int x;
for(int j=0;j<=3;j++)
{
cin>>x;
v1.push_back(x);// Here we pushing 4 values to the Vector..
}
v1.push_back(12);//Adding one more value to Vector dynamically
for(int i=0;i<v1.size();i++){
cout<<v1[i]<<"";
}
}
相关文章:
- 如何将元素从向量转移到新数组?
- 如何在新数组较小时创建新数组并将旧数组的最后一个元素复制到新数组中?
- C++ "oldstyle container ":指针/数组/新 - 可能误会?
- 是复制了新数组还是指向结构中引用的数组的指针?
- 标量"新 T "与数组"新 T[1]"
- 如何将大括号初始值设定项用于动态大小数组和新数组?
- 如何按姓氏排序并打印新数组
- 如何修改数组,从中删除空格,然后将其存储在新数组中
- 有没有办法创建一个花哨的迭代器和相应的新数组,以便检查每个索引的索引值的条件?
- 从一系列的evens和赔率中,新数组是持续的第一个赔率
- 在新数组中获取随机值
- 将数组的特定元素移动到新数组
- 我如何使用此二叉搜索函数的修改后的最大/最小值创建新数组
- 如何从函数返回的数组中创建一个新数组
- 合并排序 - 返回新数组,而不是将合并的数组复制到输入数组
- C 2 DIM数组新获得0
- 创建新数组时写入位置时发生访问冲突
- 将 argv 复制到新数组中
- C++中的动态数组(指针数组还是新数组?
- 编译器认为新数组正在创建新对象