【问题标题】:Initialize a float array on construction在构造时初始化浮点数组
【发布时间】:2012-10-02 16:16:58
【问题描述】:

在 C++ 中有没有办法构造一个浮点数组来初始化它的值?

例如,我这样做:

float* new_arr = new float[dimension];
for(unsigned int i = 0; i < dimension; ++i) new_arr[i] = 0;

施工期间可以做作业吗?

【问题讨论】:

    标签: c++


    【解决方案1】:
    float* new_arr = new float[dimension]();
    

    【讨论】:

    • 通过统一初始化 (C++11),您可以执行 new float[dimension]{} 甚至给出值:new float[dimension]{1.f,.5f,1.3f}
    • 如果您不使用 C++11 并且想要这样做,您可能可以在存储初始值的某处声明一个静态 const 数组,然后在新分配的数组上对其进行 memcpying .
    • @Wug 不是 memcpy, std::copy
    【解决方案2】:

    在这种特殊情况下(全为零),您可以使用值初始化:

    float* new_arr = new float[dimension]();
    

    您可以使用std::vector&lt;float&gt; 而不是显式使用new[]

    std::vector<float> new_vec(dimension, 0);
    

    【讨论】:

    • 我不能随意使用矢量模板,因为我正在使用一些外部库。谢谢。
    • @Aslan986:如果问题是某个函数期望 float*,那么只需传递 &amp;v[0]std::vector 保证了连续缓冲区。所以除非你的库是像自定义运行时在显卡上进行多处理,否则只需使用std::vector
    猜你喜欢
    • 1970-01-01
    • 2016-03-22
    • 2011-05-02
    • 1970-01-01
    • 2010-11-05
    • 2012-09-29
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    相关资源
    最近更新 更多