如何解决在 C++ 中是否可以使用 scanf() 或 std::cin << 或类似的输入函数来初始化 const Int ?
我想声明一个 array[x]
,但我希望每次启动新程序时数组的大小都可以更改。我的第一个想法是在声明我的 int x; scanf("%d",&x);
之前的一行 array[x]
但这不起作用,因为 x 必须是一个 const int。
我的下一个想法是简单地创建一个 const int x; scanf("%d",&x);
但这次尝试也失败了,因为
array[x]
或者更确切地说,必须先初始化 const int x 才能启动程序。
我最后的想法是初始化 x const int x = 1;
并在下一次 scanf("%d",&x);
在这次尝试中,程序没有崩溃,但没有用。在我启动程序的那一刻,我的 array[x]
被我的“旧”x 初始化。所以我改变的 x 没有影响。
你有什么想法我可以如何解决这个小问题,或者在我用 C++ 启动程序后无法初始化一个 const int 或整个 const 类型吗?
解决方法
很遗憾,您不能直接执行此操作。 你可以做的是使用这个想法:
const int x = []{int x; scanf("%d",&x); return x;}();
对于数组,
const std::vector<double> v = []{
int x; scanf("%d",&x);
std::vector<double> v(x);
...fill v...
return v;
}();
如果您想要一个大小固定(初始化后)但具有可修改元素的数组,则必须超越 static_vector 类型的结构。 (无论如何,这种数组的变体都不是一个很好的类型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。