C++ 数组到 vector 问题

标签 c++ arrays vector copy

我试图将一个数组复制到一个 vector ,但是,当数据被复制到 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   

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

我用它从图像创建视频。如果我使用数组数据,一切都很好,但如果我使用 vector 数据,它就不起作用。

如有任何帮助,我们将不胜感激。

干杯

最佳答案

int arraySize = 640000;

必须是 const在标准 C++ 中。 g++ 允许可变长度数组作为受 C99 启发的语言扩展。最好关闭该扩展程序。 :-)

std::vector<unsigned char> vector_buffer;
unsigned char buffer[arraySize];

确定 arraySizeconst ,但不会用例如编译带有原始代码的 Visual C++。

populateArray(&buffer);

这很可能是 populateArray(buffer) , 除非你有一个非常奇怪的 populateArray 声明.

for(int i = 0; i < arraySize; i++)
     cout << buffer[i];  // this prints out data

上面打印的数据没有元素之间的间距。最好加点间距。或换行符。

std::copy ( buffer, buffer + arraySize, std::back_inserter(vector_buffer)); 

最好只使用 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   

同样,这显示元素之间没有间距。

当您修复这些问题后,明显的问题是否仍然存在?

如果是这样,请同时发布您的 populateArray功能。

关于C++ 数组到 vector 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3926340/

相关文章:

c++ - 从 std::ofstream 获取句柄

c++ - Makefile 说变量是空的,但它不是

java - 有什么方法可以找到出现以下索引错误的原因吗?

c++ - 将指向前向声明类型的指针插入 typedef vector 时出现编译器错误

c++ - 在 C++ 中使用加密流

c++ - 如何通过CTOR从constexpr中的STRING LITERAL初始化char数组成员

javascript - 在浏览器上保存数据(作为 JS 数组)是一件坏事吗?

python - Numpy:用连续整数填充二维 numpy 数组

java - 将数组分成两半并找到两个最大值,然后合并这两个值

c++ - 在 vector c++ 中保存大数据