gpt4 book ai didi

c++ - 没有堆的 static const std::vector 初始化?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:51:54 26 4
gpt4 key购买 nike

假设我想要一个无符号字符的 std::vector。它是用初始化列表(这是 C++11)初始化的,永远不会改变。我想避免任何堆分配,即使在启动时也是如此,并让整个 vector 像 const 字符串一样存在于数据段中。那可能吗? IE:
static const vector<char> v{0x1, 0x2, 0x3, 0x0, 0x5};
(这是一个有点学术性的问题;我知道为此使用 C 数组并不难。)

最佳答案

为什么不直接使用 std::array为此?

static const std::array<char, 5> v{0x1, 0x2, 0x3, 0x0, 0x5};

这避免了任何动态分配,因为 std::array 使用的内部数组很可能声明为 T arr[N],其中 N 是您传递的大小在模板中(此处 5)。

当您在这里时,您甚至可能想要将变量设为 constexpr ,正如@MSalters 指出的那样,“为编译器提供了更多机会来消除 v 的存储。”

关于c++ - 没有堆的 static const std::vector<char> 初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48552684/

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