我有两个清单.第一个列表具有特定长度,第二个列表具有不稳定长度.我想从两个列表中分配项目.我用colour_index = sel_pos%(len(colours)).sel_pos是不稳定列表中项目的位置.如何每次都找到这个位置?
我的工作区中有很长的变量列表.首先,我发现了我可能对使用该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) 我可以为一维数组编写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++编译器
int h, w;
cin>>h>>w;
int a[h + 1][w + 1], f[h + 1][w + 1];
Run Code Online (Sandbox Code Playgroud)
我应该使用这种类型的声明来减轻空间复杂性,而不是在获取实际的请求大小之前声明数组吗?
我正在进行一个项目,我们必须从文件中读入,将它们临时存储在动态分配的内存中,进行排序和填充,然后释放内存。
由于该项目正在测试我们对动态内存和内存泄漏的了解,其中一项指示是不要使用 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 很陌生,但我在一个看似非常微不足道的问题上遇到了麻烦。我想做的就是创建一个大小的数组,这样在运行时我不知道它的大小并且无法指定它。下面的代码运行得非常好。
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 中可以工作的东西)会附带一个错误。有人可以指出我正确的方向吗?新手有机会提供帮助吗?
所以我正在使用带有可变长度数组成员的结构类型,如下所示:
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++扩展,从而可以在堆栈上动态分配内存.例如,g++支持alloca()以及VLA.所有这些扩展都伴随着警告,即动态分配的内存在调用函数范围的末尾被"释放".(编辑:为了澄清,我使用'deallocated'周围的引号,因为实际发生的是编译器递减/递增堆栈指针,因此为什么alloca()需要编译器支持.)这意味着alloca()在类的构造函数中使用分配的内存被释放一旦构造函数返回.
在构造函数经历一些非常重要的步骤来确定要分配多少内存的类中,这种限制变得难以处理.该类的用户必须在构造类的函数中分配内存,暴露一些可能不应该暴露的内部.此外,将解决方法放在我的代码中以便能够使用alloca()或使用VLA通常是不方便的.
你能想出一些方法来绕过这个限制,以便我可以使用alloca(),VLA或其他语言扩展,以便内存可以在类中分配并具有类范围吗?
我在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下标需要数组或指针类型
我在运行此代码时遇到错误
int row1=2,col1=2;
int mat1[row1][col1]=
{
{1,5},
{4,6}
};
Run Code Online (Sandbox Code Playgroud)
这段代码出了什么问题?
IDE:CodeBlocks
错误:可能无法初始化可变大小的对象