c ++数组到向量问题

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)

数据似乎以某种方式被压缩.将数组复制到向量的任何方法都会做同样的事情.

我用它来创建图像视频.如果我使用数组数据一切都很好,但如果我使用矢量数据它不起作用.

任何帮助将受到高度赞赏.

干杯

Che*_*Alf 9

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时arraySizeconst,但不会如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功能.