相关疑难解决方法(0)

我可以不复制就将std :: vector <char>重新解释为std :: vector <unsigned char>吗?

我有一个引用std::vector<char>,希望将其用作接受函数的参数std::vector<unsigned char>。我可以不复制就做吗?

我有以下功能,它可以工作;但是我不确定是否真的要进行复制-有人可以帮我理解吗?是否std::move可以避免复制或是否尚未复制?

static void showDataBlock(bool usefold, bool usecolor,
            std::vector<char> &chunkdata)  
{
  char* buf = chunkdata.data();                      
  unsigned char* membuf = reinterpret_cast<unsigned char*>(buf); 
  std::vector<unsigned char> vec(membuf, membuf + chunkdata.size()); 
  showDataBlock(usefold, usecolor, vec);   
} 
Run Code Online (Sandbox Code Playgroud)

我以为我可以写:

std::vector<unsigned char> vec(std::move(membuf),
                               std::move(membuf) + chunkdata.size());  
Run Code Online (Sandbox Code Playgroud)

这是过度杀伤力吗?实际发生了什么?

c++ stdvector reinterpret-cast

5
推荐指数
2
解决办法
3651
查看次数

标签 统计

c++ ×1

reinterpret-cast ×1

stdvector ×1