我不确定为此需要 vector ,但我认为我不能使用数组,因为我没有固定大小。
我有一个单例类 Song
其中有一个成员 vector<float> samples;
和一种方法 getSamples(int numberOfSamples)
调用此方法时,我想让 vector 的大小正确(基于 numberOfSamples
),而不是可能多次更新它的某些值。
vector<float> &Song::getSamples(int numberOfSamples){
for(int i = 0; i < numberOfFrames; i++)
this->samples.push_back(0);
}
例如,如何将第 3 个值从 0 更改为 3?使用数组会容易得多,做类似 samples[2] = 3;
的事情但问题是在调用 getSamples 方法之前我不知道 vector/数组的长度。而且我认为不断迭代不是一个好主意,因为 numberOfSamples
可能会很大,我可能需要将每个值更新多达五次。
最佳答案
你可以简单地resize vector ,它将值初始化(默认为 T()
,对于 float
将是 0.0
)所有新值:
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;
关于c++ - 为 vector 成员提供默认值并更新元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11819325/