如何将 uint8* 正确复制到矢量<Uint8>
How to copy uint8* to vector<Uint8> correctly
我试图从Uint8*中创建一个Uint8的向量,但由于某些原因,这些值不相同。这是我的代码。
std::vector<Uint8> wav_vector = {};
Uint8* wav_buffer_;
for (unsigned int i = 0; i < wav_length_; i++) {
wav_vector.push_back(wav_buffer_[i]);
}
然后我试图验证值:
for (unsigned int i = 0; i < wav_length_; i++){
if (wav_buffer_[i]!=wav_vector[i]){
cout<<i<<endl;
printf("Orignal Buffer %un", wav_buffer_[i]);
printf("Vector Buffer %un", wav_vector[i]);
}
}
这些是我的示例输出:
Index: 0
Orignal Buffer 208
Vector Buffer 40
Index: 1
Orignal Buffer 72
Vector Buffer 3
Index: 2
Orignal Buffer 111
Vector Buffer 183
Index: 3
Orignal Buffer 1
Vector Buffer 97
Index: 4
Orignal Buffer 0
Vector Buffer 79
Index: 5
Orignal Buffer 0
Vector Buffer 127
Index: 8
Orignal Buffer 120
Vector Buffer 40
Index: 9
Orignal Buffer 251
Vector Buffer 3
Index: 10
Orignal Buffer 182
Vector Buffer 183
Index: 16
Orignal Buffer 0
Vector Buffer 176
Index: 17
Orignal Buffer 0
Vector Buffer 200
Index: 18
Orignal Buffer 0
Vector Buffer 109
Index: 19
Orignal Buffer 0
Vector Buffer 1
Index: 24
Orignal Buffer 0
Vector Buffer 176
Index: 25
Orignal Buffer 0
Vector Buffer 200
Index: 26
Orignal Buffer 0
Vector Buffer 109
Index: 27
Orignal Buffer 0
Vector Buffer 1
Index: 32768
Orignal Buffer 16
Vector Buffer 120
任何帮助都将非常感激。
注意:我试过了,效果不错。但是我想使用for循环,因为我有一些其他的音频格式,这将需要位移位。
std::vector<Uint8> wav_vector(&wav_buffer_[0], &wav_buffer_[wav_length_]);
看起来std::vector
有一个可以从迭代器(或指针)复制的构造函数
你可以这样做:
std::vector<uint8_t> my_vector(&wave_buffer[0], &wave_buffer[N]);
也许你可以试试memcpy
:
#include <iostream>
#include <vector>
int main()
{
uint8_t arr[3] = {1, 2, 3};
std::vector<uint8_t> vec(3);
memcpy(vec.data(), arr, 3);
for (auto i : vec)
std::cout << static_cast<int>(i) << " ";
std::cout << std::endl;
}
将数组复制到vector的更多细节可以在https://www.techiedelight.com/convert-array-vector-cpp/
希望对大家有所帮助
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- EASTL矢量<向量<int>>连续的
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- C :对矢量进行排序&lt; struct&gt;(结构有2个整数)基于结构的整数之一
- 明确的专业化“ CheckIntmap&lt;&gt;”实例化
- 什么是模板&lt;&gt;inline bla bla
- 编辑C Qlist&lt; object*&gt; gt;QML代码和一些QML警告中的模型
- eigen :: llt&lt;eigen :: matrixxd&gt;具有不完整的类型
- 错误,包括&lt; ctype&gt;在原子上使用C 11
- std::vector<;uint8_t>;当C++11/14启用时,手动复制而不是调用memcpy
- 如何加入向量&lt; int&gt;到C 中的单个INT
- 是std :: set&lt; std :: future&gt;不可能存在
- 是numeric_limits&lt; int&gt; :: is_modulo从逻辑上矛盾
- opencv 2.4.7在iOS错误背景_segm.hpp #include&lt; list&gt;未找到
- 在修改列表后,std :: list&lt; t&gt; :: end()的值是否会更改
- ///<评论></评论>在Visual Studio中