use*_*443 2 c++ arrays copy vector
我试图将数组复制到矢量,但是,当数据被复制到矢量时,它与原始数组的数据不同.
int arraySize = 640000;
std::vector<unsigned char> vector_buffer;
unsigned char buffer[arraySize];
populateArray(&buffer);
for(int i = 0; i < arraySize; i++)
cout << buffer[i]; // this prints out data
std::copy ( buffer, buffer + arraySize, std::back_inserter(vector_buffer));
for(int i = 0; i < arraySize; i++)
cout << vector_buffer[i]; // this prints out different data
Run Code Online (Sandbox Code Playgroud)
数据似乎以某种方式被压缩.将数组复制到向量的任何方法都会做同样的事情.
我用它来创建图像视频.如果我使用数组数据一切都很好,但如果我使用矢量数据它不起作用.
任何帮助将受到高度赞赏.
干杯
该
int arraySize = 640000;
Run Code Online (Sandbox Code Playgroud)
需要使用const标准C++.g ++允许可变长度数组作为C99启发的语言扩展.最好关闭该扩展程序.:-)
std::vector<unsigned char> vector_buffer;
unsigned char buffer[arraySize];
Run Code Online (Sandbox Code Playgroud)
OK时arraySize是const,但不会如VISUAL C++与你原来的代码进行编译.
populateArray(&buffer);
Run Code Online (Sandbox Code Playgroud)
这很可能是populateArray(buffer),除非你有一个非常奇怪的声明populateArray.
for(int i = 0; i < arraySize; i++)
cout << buffer[i]; // this prints out data
Run Code Online (Sandbox Code Playgroud)
以上打印数据,元素之间没有间距.更好地添加一些间距.或换行.
std::copy ( buffer, buffer + arraySize, std::back_inserter(vector_buffer));
Run Code Online (Sandbox Code Playgroud)
更好的只是使用assign方法std:.vector,如vector_buffer.assign( buffer, buffer + arraySize ).
for(int i = 0; i < arraySize; i++)
cout << vector_buffer[i]; // this prints out different data
Run Code Online (Sandbox Code Playgroud)
同样,这显示了两者之间没有间距的元素.
当你修复这些东西时,仍存在明显的问题吗?
如果是这样,那么请发布你的populateArray功能.
| 归档时间: |
|
| 查看次数: |
9284 次 |
| 最近记录: |