我有一个 std::array
,其固定数量 (numLines = 4
) 为 std::vector
;每个 std::vector
将包含动态数量的元素,我知道每个 std::vector
的最大大小(numMaxSteps = 32)
.
因此:
std::array<std::vector<int>, numLines> mSequences;
由于我正在以更高的速率处理音频,因此我必须永远在此过程中分配内存(因此,它会引入咔嗒声和故障)。
但我不确定如何在初始化时保留
每个std::vector
的内存。
有办法吗?或者我需要迭代 std::array
的每个项目并执行 .reserve(numMaxSteps)
?
请注意,我需要将 .size()
保持为 0:只有 .capacity()
需要增长。
最佳答案
如果您不介意在访问 vector 时多写几个字母,您还可以创建一个薄包装器:
struct vect32 {
vect32() : vect(32) {}
vector<int> vect;
};
array<vect32, 10> sequences;
sequences[0].vect.push_back(1);
关于c++ - 如何为 std::array 中的 std::vectors 保留内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55652990/