gpt4 book ai didi

c++ - 将 vector 作为指针传递

转载 作者:搜寻专家 更新时间:2023-10-31 00:55:27 27 4
gpt4 key购买 nike

我有一个浮点 vector

vector<float>nFloats;

我想将它传递给以下函数:

/* This is a non-stream oriented interface to just change the speed of a sound sample */
int sonicChangeFloatSpeed(
float *samples,
int numSamples,
float speed,
float pitch,
float rate,
float volume,
int useChordPitch,
int sampleRate,
int numChannels)
{
sonicStream stream = sonicCreateStream(sampleRate, numChannels);

sonicSetSpeed(stream, speed);
sonicSetPitch(stream, pitch);
sonicSetRate(stream, rate);
sonicSetVolume(stream, volume);
sonicSetChordPitch(stream, useChordPitch);
sonicWriteFloatToStream(stream, samples, numSamples);
sonicFlushStream(stream);
numSamples = sonicSamplesAvailable(stream);
sonicReadFloatFromStream(stream, samples, numSamples);
sonicDestroyStream(stream);
return numSamples;
}

谁能告诉我如何正确地做到这一点?

我的尝试

 1) int iRet = sonicChangeFloatSpeed(&nFloats[0], *num, 1, 0.5, 1, 1, 1, 48000, 1);

2) int iRet = sonicChangeFloatSpeed(nFloats[0], *num, 1, 0.5, 1, 1, 1, 48000, 1);

3) int iRet = sonicChangeFloatSpeed(*nFloats, *num, 1, 0.5, 1, 1, 1, 48000, 1);

都不行。

我确定已经有人问过这样的问题,但我找不到任何完全相同的问题。

有人可以帮忙吗?

谢谢。

最佳答案

我认为您的第一个版本应该可行,因为 vector 为其元素使用连续的存储位置。

int iRet = sonicChangeFloatSpeed(&nFloats[0], nFloats.size(), 1, 0.5, 1, 1, 1, 48000, 1);

在c++11中你可以使用

float* p = nFloats.data();
int iRet = sonicChangeFloatSpeed(p, nFloats.size(), 1, 0.5, 1, 1, 1, 48000, 1);

关于c++ - 将 vector 作为指针传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41920290/

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