标签: variable-length-array

如何在python中找到列表项的位置?

我有两个清单.第一个列表具有特定长度,第二个列表具有不稳定长度.我想从两个列表中分配项目.我用colour_index = sel_pos%(len(colours)).sel_pos是不稳定列表中项目的位置.如何每次都找到这个位置?

python position list colors variable-length-array

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

MATLAB:从'who'函数循环遍历列表的值

我的工作区中有很长的变量列表.首先,我发现了我可能对使用该who函数感兴趣的潜在变量.接下来,我想遍历此列表以查找每个变量的大小,但是who仅将变量的名称作为字符串输出.

我如何使用此列表来引用变量的值,而不仅仅是名称?

谢谢,

list = who('*time*')
list = 

    'time'
    'time_1'
    'time_2'

for i = 1:size(list,1);
    len(i,1) = length(list(i))
end

len =

     1
     1
     1
Run Code Online (Sandbox Code Playgroud)

matlab list variable-length-array

1
推荐指数
2
解决办法
477
查看次数

为什么operator new不能构造非常量大小的多维数组?

我可以为一维数组编写operator new,如下所示:

int n{3};
new int[n];
Run Code Online (Sandbox Code Playgroud)

它至少分配sizeof(int) * n字节。但是当我想创建二维或多维数组时,只有第一维可能是非常量:

int n{3};
new int[n][3]; //ok
new int[n][n]; //error;
Run Code Online (Sandbox Code Playgroud)

为什么会出现这样的限制?确定至少需要sizeof(int) * n * n分配字节数是否有任何困难?

c++ arrays multidimensional-array variable-length-array

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

我读完它的大小后应该声明一个数组吗?

我最近发现这种声明适用于我的C++编译器

int h, w;
cin>>h>>w;

int a[h + 1][w + 1], f[h + 1][w + 1];
Run Code Online (Sandbox Code Playgroud)

我应该使用这种类型的声明来减轻空间复杂性,而不是在获取实际的请求大小之前声明数组吗?

c++ gcc variable-length-array

1
推荐指数
2
解决办法
98
查看次数

如何判断我是否使用 VLA(可变长度数组)?

我正在进行一个项目,我们必须从文件中读入,将它们临时存储在动态分配的内存中,进行排序和填充,然后释放内存。

由于该项目正在测试我们对动态内存和内存泄漏的了解,其中一项指示是不要使用 VLA。

我不确定我们的老师说我们不应该使用 VLA 是什么意思,我们是否不允许使用 [] 括号语法?或者我们可以使用它们,只要我们使用堆中的内存,并在它们不再使用时正确地释放它们。

这是我的 main.cpp,它尚未完成,因此请原谅一些拼写错误和可能的错误,但如果您有任何建议或纠正,我们也非常欢迎。

谢谢大家,祝大家周末愉快。

#include "proj2-arrayFunctions.h"
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main() {
    ifstream file;
    int size = 0;
    int* numberArray;
    int counter = 0;

    file.open("arrays.txt");

    if (!file)
    {
        cout << "error: file is not opened! " << endl;
        return 1;
    }

    while(file.good())
    {
        file >> size;
        numberArray = new int[size];
        for (int i = 0; i < size; i++)
        {
            file >> numberArray[i];
        }
        bubbleSort(numberArray, size);

        cout …
Run Code Online (Sandbox Code Playgroud)

c++ variable-length-array

1
推荐指数
2
解决办法
471
查看次数

如何在c中创建一个n大小的数组

我对 C 很陌生,但我在一个看似非常微不足道的问题上遇到了麻烦。我想做的就是创建一个大小的数组,这样在运行时我不知道它的大小并且无法指定它。下面的代码运行得非常好。

int main()
{
        
    int LuhnsArray[15] = {0};

    for(int i = 0; i < 15; i++)
    {
        printf("%i ", LuhnsArray[i]);
        printf("\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,当我尝试这样的事情时:

int main()
{
    
    int length = 15;
    
    int LuhnsArray[length] = {0};

    for(int i = 0; i < length; i++)
    {
        printf("%i ", LuhnsArray[i]);
        printf("\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为合乎逻辑的东西(例如,我认为在 python 中可以工作的东西)会附带一个错误。有人可以指出我正确的方向吗?新手有机会提供帮助吗?

在此输入图像描述

c initialization declaration variable-length-array

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

std::variant 中具有可变长度数组的结构

所以我正在使用带有可变长度数组成员的结构类型,如下所示:

struct Entry;

struct Data {
    int members;
    size_t entries_size;
    Entry entries[1];
};
Run Code Online (Sandbox Code Playgroud)

成员entries_size是数组的实际大小entires,只有从网络读取时才知道。问题是,我想在其他网络数据类型中使用它std::variant,如何将它放入std::variant整个数据对象的足迹中,而不会让悬空指针到处乱飞?

std::variant<Data, OtherData2, OhterData3...> v;
Run Code Online (Sandbox Code Playgroud)

c++ arrays variant variable-length-array c++17

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

具有类范围的动态分配堆栈存储器

一些编译器支持C++扩展,从而可以在堆栈上动态分配内存.例如,g++支持alloca()以及VLA.所有这些扩展都伴随着警告,即动态分配的内存在调用函数范围的末尾被"释放".(编辑:为了澄清,我使用'deallocated'周围的引号,因为实际发生的是编译器递减/递增堆栈指针,因此为什么alloca()需要编译器支持.)这意味着alloca()在类的构造函数中使用分配的内存被释放一旦构造函数返回.

在构造函数经历一些非常重要的步骤来确定要分配多少内存的类中,这种限制变得难以处理.该类的用户必须在构造类的函数中分配内存,暴露一些可能不应该暴露的内部.此外,将解决方法放在我的代码中以便能够使用alloca()或使用VLA通常是不方便的.

你能想出一些方法来绕过这个限制,以便我可以使用alloca(),VLA或其他语言扩展,以便内存可以在类中分配并具有类范围吗?

c++ stack memory-management alloca variable-length-array

0
推荐指数
1
解决办法
217
查看次数

Scanf数组限制在C?

我在C中有一些小错误:

错误:表达式必须具有常量值

我知道,这意味着我的限制必须有一个恒定的价值,但是当我遇到这种情况时,我怎么能解决这个问题呢?

printf("Type limit: ");
scanf("%i",&limit);
int arr[limit];
Run Code Online (Sandbox Code Playgroud)

谢谢.

编辑:

好的,另一个问题,对不起,如果我垃圾邮件.

    int num,limit,i;
    printf("Type limit: ");
    scanf("%i",&limit);
    int *arr = (int*)malloc(limit*sizeof(int));
    for(i=0;i<limit;i++)
    {
        printf("Type num %i: ",i);
        arr[i] = scanf("%i",&num);
    }
    system("pause");
    return 0;
Run Code Online (Sandbox Code Playgroud)

错误4错误c2109下标需要数组或指针类型

c arrays scanf variable-length-array

0
推荐指数
1
解决办法
2053
查看次数

如何在C编程中初始化多维数组

我在运行此代码时遇到错误

int row1=2,col1=2;

int mat1[row1][col1]=
{
    {1,5},
    {4,6}
};
Run Code Online (Sandbox Code Playgroud)

这段代码出了什么问题?

IDE:CodeBlocks

错误:可能无法初始化可变大小的对象

c arrays initialization variable-length-array

0
推荐指数
1
解决办法
73
查看次数