在C+中的循环中实现动态增长的数组+; 我在C++项目中有一个场景,它需要在一个for循环中使用一个动态扩展的数组,这是不利于或非常低效的预分配。简单地说,在循环的每次迭代之后,数组被附加一个子数组,该子数组的长度不同于上一次迭代。一种可能的解决方案是std::vector::push_back。但是,目前我严重依赖犰狳图书馆。我的问题如下:

在C+中的循环中实现动态增长的数组+; 我在C++项目中有一个场景,它需要在一个for循环中使用一个动态扩展的数组,这是不利于或非常低效的预分配。简单地说,在循环的每次迭代之后,数组被附加一个子数组,该子数组的长度不同于上一次迭代。一种可能的解决方案是std::vector::push_back。但是,目前我严重依赖犰狳图书馆。我的问题如下:,c++,stdvector,armadillo,dynamic-allocation,C++,Stdvector,Armadillo,Dynamic Allocation,armadillo armadillo Col、Colvec或mat数据结构是否可以进行推回式操作 如果(1)不可能,在std::vector和犰狳vector之间来回切换是否容易/有效 使用arma::fields是一种有效的替代方法吗? 其思想是分配一个大小等于循环范围的字段。 在for循环的每次迭代期间,将向量复制到字段元素中,一旦循环退出,将字段元素合并到单个向量中 该链接根本没有告诉您ot将如何与std::vectors进行比较。需要的是比较内存的处理方式。在类似的情况下,我使用了(2

armadillo armadillo Col、Colvec或mat数据结构是否可以进行推回式操作

  • 如果(1)不可能,在std::vector和犰狳vector之间来回切换是否容易/有效

  • 使用arma::fields是一种有效的替代方法吗? 其思想是分配一个大小等于循环范围的字段。
    在for循环的每次迭代期间,将向量复制到字段元素中,一旦循环退出,将字段元素合并到单个向量中


  • 该链接根本没有告诉您ot将如何与std::vectors进行比较。需要的是比较内存的处理方式。在类似的情况下,我使用了(2):增长
    std::vector
    ,并使用
    conv\u转换回
    。显然,有一个副本,但它很关键,请查看设置
    copy\u aux\u mem=false
    (高级构造函数小节)。我认为@Tenzirg的链接回答了这个问题。armadillo中的resize()函数在调整大小时保留数组中的元素,这与格式化现有数组的valarray::resize()不同。