首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何添加char*/转换为std::vector<uint8_t[]>

如何添加char*/转换为std::vector<uint8_t[]>
EN

Stack Overflow用户
提问于 2015-01-16 10:19:55
回答 1查看 1.9K关注 0票数 0

我有一个std::vector<uint8_t[1115]>,我想在里面存储一个char*。我不明白我为什么要把这个字符*放进向量中。也许这很愚蠢,但我试过这个:

代码语言:javascript
复制
char* myCharArray = new char[1115]; 
std::vector<uint8_t[1115]> myVector;
myVector.push_back(reinterpret_cast<uint8_t*>(myCharArray));

我不明白为什么这不管用。错误如下:

代码语言:javascript
复制
error: no matching function for call to ‘std::vector<unsigned char [1115]>::push_back(uint8_t*)’ 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-16 10:36:26

你有两个问题:

  1. vector的元素必须是可复制的、可构造的和可分配的,但数组不能。这意味着您不能合法地拥有数组的vector。如果您正在使用C++11或更高版本,则可以使用std::vector<std::array<uint8_t, 1115>>std::array类型是数组的可复制包装器。
  2. push_back只需复制对象即可将其插入到向量中的对象。不能将char* (或任何其他点)复制到数组中。但是,如果您遵循我在(1)中的建议,则可以完全避免指针,只需将其设置为std::array<uint8_t, 1115> myCharArray;

如果std::array对您不可用,您可以使用std::vector<std::vector<uint8_t>>,只需确保内部向量大小合适即可。

在大多数的new中,您可能会对C++感兴趣。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27981753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档