微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 C++ 中是否可以使用 scanf() 或 std::cin << 或类似的输入函数来初始化 const Int ?

如何解决在 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 举报,一经查实,本站将立刻删除。