gpt4 book ai didi

c++ - 如何在 "#define"上定义动态值

转载 作者:行者123 更新时间:2023-11-27 22:35:15 25 4
gpt4 key购买 nike

我的代码有问题。我想使用结构数组来计算一些东西。

但我的数组大小是动态而不是静态的。

这是我的代码

#include <iostream>
#define MAX 5
using namespace std;
struct Point{
int x,y;
}arrayy[MAX];

int main(){
int num_howmanytime,num_max;
cin >> num_howmanytime;
while(num_howmanytime--){
cin >> num_max;
}
}

如您所见,num_max 是动态的,它会根据用户输入的值改变值。

所以我的问题是:

如何让MAXnum_max取相同的值

我知道那是不可能的,所以必须使用其他方式,例如

最佳答案

How to let MAX get the same value with num_max?

那是不可能的。 MAX 是编译时常量(您最好声明为例如 constexpr std::size_t max = 5; 而不是使用预处理器),而 num_max 是在运行时确定的值。

关于数组大小的不同之处在于,您必须为具有运行时相关大小的数组动态分配内存。正如评论中所建议的那样,您通常不会手动执行此操作,而是依赖于现有类型,通常是模板。

您的案例示例:

#include <vector>

std::vector<Point> points;

cin >> num_max;

// Set the runtime array size, let the vector allocate its memory.
// Also, provide a default initial value for all Point instances.
points.resize(num_max, {0, 0});

请注意,将默认的 Point 实例 {0, 0} 传递给 std::vector::resize 在这里是可选的,因为函数将值初始化新创建的元素,在这种情况下是零初始化。

关于c++ - 如何在 "#define"上定义动态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55333833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com