标签: dynamic-arrays

我可以在不丢失以前内容的情况下调整Delphi数组的大小吗?

我有一个动态数组.但最初我不知道阵列的长度.我可以先做,我将它的长度设置为1,然后根据需要增加长度而不丢失以前存储的数据吗?
我知道我可以使用TList做这样的任务.但我想知道我是否可以用数组做到这一点?

delphi dynamic-arrays

8
推荐指数
1
解决办法
6890
查看次数

如何在C中将动态int数组元素初始化为0

我创建了一个动态数组,我需要将所有成员初始化为0.如何在C中完成?

   int* array;
    array = (int*) malloc(n*sizeof(int));
Run Code Online (Sandbox Code Playgroud)

c arrays dynamic-arrays

8
推荐指数
2
解决办法
2万
查看次数

为什么C++允许不动态分配的可变长度数组?

我对C++比较陌生,从一开始就钻进了我不能做的事情

int x;
cin >> x;
int array[x];
Run Code Online (Sandbox Code Playgroud)

相反,您必须使用动态内存.但是,我最近发现上面编译(虽然我得到了一个警告说它被ISO C++禁止).我知道,如果标准不允许这样做,这显然是一个坏主意,但我以前甚至都不知道这是可能的.

我的问题是,为什么g ++允许在标准不允许的情况下不动态分配的可变长度数组?另外,如果编译器可以这样做,为什么不在标准中呢?

c++ standards-compliance dynamic-arrays

7
推荐指数
2
解决办法
1497
查看次数

如何在Delphi中将动态数组保存到FileStream?

我在Delphi 2009中有以下结构:

type
  IndiReportIndi = record
    IndiName: string;
    NameNum: integer;
    ReportIndiName: string;
  end;

var
  XRefList: array of IndiReportIndi;
Run Code Online (Sandbox Code Playgroud)

其中XRefList是动态数组.

我想将XRefList保存到FileStream.我该怎么做并包括所有IndiName和ReportIndiName字符串,以便以后从FileStream加载时它们都可以再次检索?

delphi filestream dynamic-arrays

7
推荐指数
3
解决办法
6999
查看次数

在D中使用带数组的构造函数

在使用new分配数组时如何调用构造函数?

例如,在下面的代码中,如何为A的每个实例化调用构造函数,将b的所有10个元素初始化为5?

void main() {
    A[] a = new A[10];
}

class A {
    int b;
    this(int init) {
        b = init;
    }
}
Run Code Online (Sandbox Code Playgroud)

我猜这不可能,但我希望......

arrays constructor d dynamic-arrays

7
推荐指数
1
解决办法
272
查看次数

逐个删除动态数组的元素

我想通过循环遍历所有元素并调用delete每个元素来删除动态分配的数组.
(我这样做是因为我必须将一个数组"移动"到另一个位置,即复制原始数组然后将其删除,但这比同时复制每个元素并delete单独调用它们要花费2倍的时间)

我有以下代码:

int main()
{
    int *n=new int[2];
    delete n;
    delete (n+1);
}  
Run Code Online (Sandbox Code Playgroud)

但每次运行时我都会收到分段错误....

虽然,这很好 - :

int main()
{
    int *n=new int[1];
    delete n;
}    
Run Code Online (Sandbox Code Playgroud)

所以,我的猜测是删除以某种方式删除整个数组而不是单个元素!

任何人都可以解释我的猜测是否正确,如果是的话,建议一个可能的解决方法?

我在Ubuntu 13.04上使用GCC 4.7.3

c++ pointers memory-management dynamic-arrays

7
推荐指数
1
解决办法
7484
查看次数

Bad Alloc具有200GB可用内存c ++

我是C++的新手,我正在研究'压缩感应',所以我需要处理大型矩阵,而MATLAB实际上很慢,所以我用C++编写算法.

问题是我存储大数组(大约100Mb-1Gb).它们大约是20个阵列.它可以正常使用30 Gb的内存,但是当进程需要超过40Gb时,它就会停止.我认为这是一个内存问题,我在Linux和Windows上测试它(OS 64位 - 编译器64位MinGW - 200Gb Ram - intel Xeon)有任何限制吗?

size_t tm=n*m*l;
double *x=new double[tm];
Run Code Online (Sandbox Code Playgroud)

我使用大约20个像这样的阵列.n,m~ = 1000且L~ = 30这些通常是尺寸.

谢谢

c++ bad-alloc dynamic-arrays mingw-w64

7
推荐指数
1
解决办法
281
查看次数

由于delete []知道数组大小,为什么这些信息不可用?

当我在C++(T * p = new T[n])中分配动态数组时,我使用delete [] p释放分配的内存.显然,系统知道数组大小(按顺序调用n次T的析构函数).这在其他地方讨论过.例如,delete []"知道"操作数数组的大小是多少?.这是实施细节.

但为什么不决定提供这些信息呢?

谢谢

c++ size dynamic-arrays delete-operator

7
推荐指数
1
解决办法
134
查看次数

Excel 跨列唯一

新函数UNIQUE是否可以跨不同列使用并将输出溢出到单个列中?


所需的输出是UNIQUE一列中的值,基于中存在的所有值Columns: A, B, & C示例中为红色的重复项

在此处输入图片说明


  • 如果我只是使用,UNIQUE(A7:C7)我会得到跨列的溢出范围(这甚至不提供跨列的唯一值,这是出乎意料的
  • 我也尝试过,UNIQUE(A2:A6) & UNIQUE(B5:B10) & UNIQUE(C2:C5)但这只是连接了值(也出乎意料但不相关

excel excel-formula dynamic-arrays office365

7
推荐指数
4
解决办法
941
查看次数

如何在Cython中动态声明2D c数组

我需要使用各种大小的2D numpy数组执行大量工作,我想将这些计算卸载到cython上.我的想法是我的2D numpy数组将从python传递到cython,在那里它将转换为c-array或内存视图,并用于其他c级函数的级联中进行计算.

经过一些分析后,由于一些严重的python开销,我排除了在cython中使用numpy数组.使用内存视图更快,更容易使用,但我怀疑我可以使用c-arrays进一步加速.

这是我的问题 - 我怎样才能在cython中声明一个2D c-array而不用设定值预定义它的尺寸?例如,我可以通过这种方式从numpy创建一个c-array:

narr = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]], dtype=np.dtype("i"))

cdef int c_arr[3][4]:
for i in range(3):
    for j in range(4):
        c_arr[i][j] = narr[i][j]
Run Code Online (Sandbox Code Playgroud)

然后将其传递给函数:

cdef void somefunction(int c_Arr[3][4]):
    ...
Run Code Online (Sandbox Code Playgroud)

但这意味着我有一个固定的数组sizde,在我的情况下将是无用的.所以我尝试过这样的事情:

narr = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]], dtype=np.dtype("i"))

cdef int a = np.shape(narr)[0]
cdef int b = np.shape(narr)[1]

cdef int c_arr[a][b]:               # INCORRECT - EXAMPLE ONLY

for i in range(a):
    for j in range(b):
        c_arr[i][j] = narr[i][j]
Run Code Online (Sandbox Code Playgroud)

打算将它传递给这样的函数:

cdef void somefunction(int a, int b, int c_Arr[a][b]):
    ...
Run Code Online (Sandbox Code Playgroud)

但它不起作用,编译失败,错误"不允许在常量表达式中".我怀疑我需要以某种方式使用malloc/free吗?我看了一下这个问题(如何在Cython中声明2D列表),但它没有提供我的问题的答案.

更新: …

c numpy cython dynamic-arrays memoryview

6
推荐指数
1
解决办法
6503
查看次数