Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;结构数组的分配_C++_Arrays_Struct_Allocation - Fatal编程技术网

C++ C++;结构数组的分配

C++ C++;结构数组的分配,c++,arrays,struct,allocation,C++,Arrays,Struct,Allocation,我必须在C++中分配一个结构数组,任何结构都包含两个int向量。这是我的结构: typedef struct _Sample{ vector<int> contourX; vector<int> contourY; }Sample; 尝试将示例元素分配给数据[0]时,在运行时出错。问题在哪里? 经验法则:在C++中永远不要使用 MalCal 1。它是C函数,因此不做所有C++类的东西,比如调用构造函数。< /P> 如果必须动态分配内存,请改用new 1.这是一个规则,

我必须在C++中分配一个结构数组,任何结构都包含两个int向量。这是我的结构:

typedef struct _Sample{
vector<int> contourX;
vector<int> contourY;
}Sample;

尝试将示例元素分配给数据[0]时,在运行时出错。问题在哪里?

经验法则:在C++中永远不要使用<代码> MalCal 1。它是C函数,因此不做所有C++类的东西,比如调用构造函数。< /P> 如果必须动态分配内存,请改用

new



1.这是一个规则,除了少数例外,但是对于大多数情况来说,作为一个覆盖规则是安全的。

< P>如果你在C++中编程,你可以使用“新”……
_样本*数据=新样本[大小]

您正在尝试创建一个数组,为此,应使用
new[]
分配内存(并使用
delete[]
取消分配内存)

这样,您的代码应该是:

Sample* data = new Sample[nsamples];
然后可以像任何数组一样迭代数组的每个元素:

for(int i = 0; i < nsamples; i++)
{
    data[i].contourY // do something
    data[i].contourX // do something
}
for(int i=0;i
您需要使用
new
-需要执行向量的构造函数。

向量元素的大小仍然为0。如何访问它们?示例*数据=(示例*)malloc(sizeof(示例)*nsamples);//你使用的是TyPulf,所以使用“样本”为什么古语<代码> TyPulfFrase C++?TyWIFF的目的是让你不必做他做的“StuttStaskSimple”…只是simplicity@jdl,可能是C;在C++中,在<代码>结构样本{{/*.*/};<代码>,
示例
为完整类型名称;没有
struct
required…奥利,扩展分配的内存区域怎么样?或者将
mmap
连接到
new
new[]
操作员?@VladLazarenko:“经验法则”!=“总括规则”。/me将自己置于“保持”状态:)-1不是我。一般来说,对新手来说,这是一个很好的经验法则。
for(int i = 0; i < nsamples; i++)
{
    data[i].contourY // do something
    data[i].contourX // do something
}