我正在处理存储在 vector 中的波形。音频 channel 是交错的。我必须分别处理 channel ,然后(再次)交错提供最终结果。在每个 channel 上运行的函数接受由随机访问迭代器分隔的范围,并假定该范围是连续的。
由于这些操作必须实时(或某种程度上)执行,我想伪造去交织阶段:换句话说,我正在寻找一种方法让单 channel 功能在特定的条件下运行channel 实际上没有去交织任何东西,也没有影响他们当前的代码,假设迭代器的 ++
(或 --
)运算符移动到下一个(或前一个)元素。
你有什么建议?我目前正在考虑编写一个自定义随机访问迭代器。还有其他可行的解决方案吗?我不想使用 boost。
最佳答案
您应该提供一个自定义迭代器,它实现了 operator++()
和 operator--()
w/r/t channel 数以保持交错。您可以在不使用 boost 的情况下执行此操作。
但是,您还必须调整 vector 类以使用新的迭代器。因此,必须通过使用新的 vector 类来更改当前代码。
关于c++ - 无需去交织即可在单个音频 channel 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20871726/