gpt4 book ai didi

C++ 数组到 vector 问题

转载 作者:太空狗 更新时间:2023-10-29 23:31:34 24 4
gpt4 key购买 nike

我试图将一个数组复制到一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com