【问题标题】:Array with fixed size at runtime运行时固定大小的数组
【发布时间】:2018-12-11 11:13:38
【问题描述】:

我知道我可以使用std::array<Type, Size> 来获得Type 类型的数组和一个大小,该大小在编译时修复。

此外,std::vector 可以使用,如果大小在编译时不是固定的,而是在运行时给出的。

是否有一个标准容器,可以在运行时设置为某个大小并且这个大小是不可更改的?我的意图是如果在创建此容器后更改大小,则会出现编译错误。

当然,这可以通过使用指针的老式数组进行归档。然而,这也带来了必须将指针和长度传递给函数的缺点?

【问题讨论】:

  • 我不知道。最接近的是std::unique_ptr<double[]>,我认为 + 大小跟踪。
  • 可能是有限制的自定义容器实现?
  • 有理由不为此使用std::vector吗?
  • 确实,一个具有唯一指针+大小的小类很容易实现。
  • 您正在寻找一个大小合适的std::vector,在此您使用operator[] 并禁止使用push_back。我认为不值得为此编写大量额外代码,只需使用已有的代码即可

标签: c++ arrays stl containers


【解决方案1】:

是否有std容器,可以在运行时设置成一定的大小并且这个大小是不可改变的?

没有这样的标准容器提供该功能(目前)。

您可以使用固定大小为std::vector 编写一个简单的包装类,就像这里的答案中建议的那样:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 2017-07-29
    • 2013-12-04
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多