我不确定我是否需要向量,但是我不认为我可以使用数组,因为我没有固定的大小。

我有一个Singleton类Song,其中有一个成员vector<float> samples;和一个方法getSamples(int numberOfSamples)调用此方法时,我想使向量的大小正确(基于numberOfSamples),而不是更新其中的某些值多次。

vector<float> &Song::getSamples(int numberOfSamples){
    for(int i = 0; i < numberOfFrames; i++)
        this->samples.push_back(0);
}


因此,例如,如何将第3个值更改为3而不是0?使用数组执行类似samples[2] = 3;的操作会容易得多,但问题是在调用getSamples方法之前我不知道向量/数组的长度。而且我不认为不断地迭代不是一个好主意,因为numberOfSamples可能很大,并且可能需要将每个值最多更新五次。

最佳答案

您可以简单地resize向量,它将对所有新值进行初始化(默认值为T(),对于0.0将为float)。

vector<float> &Song::getSamples(int numberOfSamples){
    this->samples.resize(this->samples.size() + numberOfFrames);
    // did you mean numberOfSamples instead of numberOfFrames, there?
}


要为给定索引设置值,可以像使用普通C数组一样使用下标运算符:

this->samples[2] = 3;

10-06 05:24