微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在c ++中,关于向量push_back的问题,我不确定如何在内填充

如何解决在c ++中,关于向量push_back的问题,我不确定如何在内填充

| 我有一个关于
vector
push_back()
的问题。我正在编写代码以将图像获取到缓冲区中并将其存储在
vector
中。我检查了可能需要使用
push_back()
,但是现在不确定我应该如何格式化
pImageBuffer
可以将它存储到ѭ0中。也许这是另一个容易回答的问题,但是我一直在尝试整个上午,但仍然感到困惑。我希望有人能给我一些启发。在此先非常感谢! Result.Buffer()来自相机SDK,它将由StreamGrabber.QueueBuffer续订。我的问题是每当我构建时都会出现如下错误: std :: vector <_Ty> :: push_back \':Konvertierung des参数1 von \'const uint8_t * \'在\'unsigned char * const&\'中是不可能的 我的代码是这样的。 ....
std::vector<uint8_t *> images(100);// here is the problem,it needs a \"const\",or    delete const down const uint8_t *pImageBuffe.Thanks very much guys for your answers!!!

while(1){
....

 const uint8_t *pImageBuffer = (uint8_t *) Result.Buffer();// Here I get the image data

 images.push_back(pImageBuffer);// This is obvIoUs wrong,but I am not sure in side (),what should I do 

 StreamGrabber.QueueBuffer(Result.Handle(),NULL);

...
}
    

解决方法

您有
const uint8_t*
,但您的容器存储了
uint8_t*
。 另请注意,您正在此处添加第100、101、102个元素,而不填充第0、1、2个元素... 您可能想要:
std::vector<const uint8_t*> images(100);

size_t i = 0;
while (i < 100) {
  // ..
  const uint8_t* pImageBuffer = (uint8_t*)Result.Buffer();
  images[i++] = pImageBuffer;
  // ..
}
或者您可能想要:
std::vector<const uint8_t*> images;

while (true) {
  // ..
  const uint8_t* pImageBuffer = (uint8_t*)Result.Buffer();
  images.push_back(pImageBuffer);
  // ..
}
或者您可能想要没有without11的组合。     ,卸下
const
std::vector<uint8_t *> images;//(100);

while(whateverCondition)
{
   uint8_t *pImageBuffer = (uint8_t *) Result.Buffer();
   images.push_back(pImageBuffer);
}
确保“ 14”函数在每次调用时分配新缓冲区。     ,向量元素的类型必须与您放入其中的事物的类型相同(或至少兼容)。 我怀疑这是错误的,您正在将类型为
const uint8_t *
的值推入元素类型为
uint8_t *
的向量中-也就是说,您正在尝试将const指针转换为非const指针。 将向量的类型更改为
std::vector<const uint8_t *>
。     ,在您的代码示例中,唯一真正错误的是您正在尝试将ѭ15放入向量ѭ16中。尝试取下ѭ11,看看效果是否更好。     ,您不需要
(100)
-并且需要对
const
保持一致。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。