C++ 如何在C++;

C++ 如何在C++;,c++,struct,dynamic-arrays,C++,Struct,Dynamic Arrays,我有以下要初始化的结构 struct Box{ int *dimval; int no; int dim; Box(dim){ this->dim = dim; dimval = new int[dim] } } 现在是我的主要功能。我想初始化Box struct的数组,但这在我的实现中是有问题的 int main(){ Box *boxes; int num_box, dim; cin

我有以下要初始化的结构

struct Box{
    int *dimval;
    int no;
    int dim;

    Box(dim){
        this->dim = dim;
        dimval = new int[dim]
    }

}
现在是我的主要功能。我想初始化Box struct的数组,但这在我的实现中是有问题的

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项的动态数组,每个项都用dim long的动态数组初始化。我该怎么做呢?

除非某个类型的数组有默认构造函数,否则无法创建该类型的数组,并且无法对每个数组进行初始化。但是,您可以使用默认对象初始化向量,这正是您在这里所要求的

#include <vector>

int num_box, dim;
cin >> num_box >> dim;
vector<Box> boxes(num_box, Box(dim));
。。。但是,如果简单地用向量替换
dimval
指针,也可以使用默认的复制构造函数,因为向量处理复制(这也会修复泄漏)

struct-Box
{
向量dimval;
国际贸易编号;
int-dim;
框(内部尺寸)
:dimval(dim)
{
这个->变暗=变暗;
}
}

除非类型的数组具有默认构造函数,否则无法创建该类型的数组,并且无法对每个数组进行初始化。但是,您可以使用默认对象初始化向量,这正是您在这里所要求的

#include <vector>

int num_box, dim;
cin >> num_box >> dim;
vector<Box> boxes(num_box, Box(dim));
。。。但是,如果简单地用向量替换
dimval
指针,也可以使用默认的复制构造函数,因为向量处理复制(这也会修复泄漏)

struct-Box
{
向量dimval;
国际贸易编号;
int-dim;
框(内部尺寸)
:dimval(dim)
{
这个->变暗=变暗;
}
}

除非类型的数组具有默认构造函数,否则无法创建该类型的数组,并且无法对每个数组进行初始化。但是,您可以使用默认对象初始化向量,这正是您在这里所要求的

#include <vector>

int num_box, dim;
cin >> num_box >> dim;
vector<Box> boxes(num_box, Box(dim));
。。。但是,如果简单地用向量替换
dimval
指针,也可以使用默认的复制构造函数,因为向量处理复制(这也会修复泄漏)

struct-Box
{
向量dimval;
国际贸易编号;
int-dim;
框(内部尺寸)
:dimval(dim)
{
这个->变暗=变暗;
}
}

除非类型的数组具有默认构造函数,否则无法创建该类型的数组,并且无法对每个数组进行初始化。但是,您可以使用默认对象初始化向量,这正是您在这里所要求的

#include <vector>

int num_box, dim;
cin >> num_box >> dim;
vector<Box> boxes(num_box, Box(dim));
。。。但是,如果简单地用向量替换
dimval
指针,也可以使用默认的复制构造函数,因为向量处理复制(这也会修复泄漏)

struct-Box
{
向量dimval;
国际贸易编号;
int-dim;
框(内部尺寸)
:dimval(dim)
{
这个->变暗=变暗;
}
}



如果你想这样做,你需要一个默认的构造函数…但是,默认构造函数,我不能在它中传递Dimple参数,不使用原始数组,而是使用<代码> STD::vector < /C> >。我正在练习用C++编写C风格代码,所以STL数据类型不是首选的。你如何用c代码实现这一点?@Daniel
我正在练习用c++编写c风格的代码
为什么?为什么不直接写C代码而不是浪费时间用C++,在这个过程中,把标签改为<代码> c>代码>代替代码> C++ +/>代码。如果你想做这个,你需要一个默认的构造函数…但是默认构造函数,我不能通过简单的参数,不使用原始数组,使用<代码> STD::向量< /代码>。我正在练习用C++编写C风格代码,所以STL数据类型不是首选。你如何用c代码实现这一点?@Daniel
我正在练习用c++编写c风格的代码
为什么?为什么不直接写C代码而不是浪费时间用C++,在这个过程中,把标签改为<代码> c>代码>代替代码> C++ +/>代码。如果你想做这个,你需要一个默认的构造函数…但是默认构造函数,我不能通过简单的参数,不使用原始数组,使用<代码> STD::向量< /代码>。我正在练习用C++编写C风格代码,所以STL数据类型不是首选。你如何用c代码实现这一点?@Daniel
我正在练习用c++编写c风格的代码
为什么?为什么不直接写C代码而不是浪费时间用C++,在这个过程中,把标签改为<代码> c>代码>代替代码> C++ +/>代码。如果你想做这个,你需要一个默认的构造函数…但是默认构造函数,我不能通过简单的参数,不使用原始数组,使用<代码> STD::向量< /代码>。我正在练习用C++编写C风格代码,所以STL数据类型不是首选。你如何用c代码实现这一点?@Daniel
我正在练习用c++编写c风格的代码
为什么?为什么不直接写C代码而不是浪费时间用C++,在这个过程中,将标记更改为
C
,而不是
C++
。在动态分配指针的上下文中如何执行此操作?我正在维护我的动态数组版本,而不是使用stl向量使用
new
创建数组时,不能调用默认构造函数以外的构造函数,并且需要有一个默认构造函数才能使用
new
创建数组。你唯一的另一个解决方案是使用新的布局,但这真的会打开一个蠕虫罐头。不管怎样,下面是你的方法,但我个人认为,如果这不仅仅是为了学习的目的,你会开枪打死自己的脚:@Daniel如果你可以在两者之间自由选择,你为什么要使用自己版本的
std::vector
。@Daniel
我正在维护我版本的dynamic array,而不是使用stl vector
,而你正在这样做那个一些C++程序员使用了<代码> STD::vector < /COD>,在完成他们的程序方面已经取得了很大的进步。在动态分配指针的上下文中,有什么方法可以做到这一点吗?我在维护动态数组而不是使用STL向量,在创建数组时,不能调用默认构造函数以外的构造函数。使用
新建
,并且