gpt4 book ai didi

c++ - 为 vector 成员提供默认值并更新元素

转载 作者:行者123 更新时间:2023-11-28 00:55:18 25 4
gpt4 key购买 nike

我不确定为此需要 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com