c++ - 如何为 std::array 中的 std::vectors 保留内存?

标签 c++ vector memory-management stl containers

我有一个 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/

相关文章:

c - 在 C 中取消分配结构的动态链表

C++匹配括号解决方案

iphone - iphone 上的 glreadPixels 问题

r - 当你有一个向量时,如何在 R 中使用子字符串函数?

php - 如何将 N 个向量的每个元素相乘 N^N 次

c++ - 如何找出两个 vector 之间的角度是外部角度还是内部角度?

objective-c - [ self 自动释放] 可以接受吗?

C 内存缓冲区破坏微 Controller 内存分配 - Atmel ATxmega

c++ - map 包含值作为列表+如何在 C++ 中打印

c++ - 允许对单个值进行隐式转换