如何在c++中初始化自定义结构体的动态数组
How to initialize a dynamic array of customized struct in C++
我有下面的结构体,我想初始化
struct Box{
int *dimval;
int no;
int dim;
Box(dim){
this->dim = dim;
dimval = new int[dim]
}
}
现在在我的主函数中。我想初始化一个Box结构的数组,但这在我的实现中是有问题的。
int main(){
Box *boxes;
int num_box, dim;
cin>>num_box>>dim;
boxes = new Box[num_box](dim);// I know this is devil here.
}
我想要一个包含num_box Box项的动态数组,每个项都用dim long动态数组初始化。我该怎么做呢?
你不能创建一个类型的数组,除非它有默认构造函数,然后你不能初始化每个数组。然而,你可以用一个默认对象初始化vector,这和你在这里要求的差不多。
#include <vector>
int num_box, dim;
cin >> num_box >> dim;
vector<Box> boxes(num_box, Box(dim));
注意,你需要一个复制构造函数来处理复制dimval
…
#include <algorithm>
struct Box
{
// ...
Box(const Box& that)
{
this->dim = that.dim;
this->no = that.no;
this->dimval = new int[dim];
copy(that.dimval, that.dimval + that.dim, this->dimval);
}
};
…但是,如果您简单地将dimval
指针替换为vector,则可以使用默认的复制构造函数,因为vector处理复制(这也会修复泄漏)。
struct Box
{
vector<int> dimval;
int no;
int dim;
Box(int dim)
: dimval(dim)
{
this->dim = dim;
}
}
相关文章:
- 根据用户回答声明"Players"。用户选择玩家数量。播放器是结构体
- 结构体 S { int align; } 之间的区别;(struct 关键字后的名称)和 struct { int al
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 包含 std::list 的结构体的 C++ 初始化
- 结构体和类的不同大小(),彼此具有相同的字段类型
- 如何使用结构体的向量数组?
- 如何使用结构体在C++中更改这些代码?
- 如何在构造函数中初始化结构体的动态数组?
- 在不知道结构体大小的情况下使用动态大小的结构体调用
- 分配包含多个动态数组的c结构体
- c++动态数组结构体分割错误
- 具有动态分配成员的结构体的向量
- 如何将结构体动态数组传递给成员函数
- 是结构体中的复制构造函数,该结构体包含动态分配的数组,总是必需的
- 如何在动态二维数组中存储数据,在结构体中声明,该结构体也被c++中的另一个结构体使用
- 从c#发送带有动态字符串数组的结构体到c++ dll
- 如何在c++中初始化自定义结构体的动态数组
- 动态结构体成员在使用 CUDA/NVCC 传递到函数时损坏
- /a.检测到Glibc.out: munmap_chunk():无效指针- c++结构体的动态数组
- 结构体中二维数组的动态内存分配