我有一个引用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)
这是过度杀伤力吗?实际发生了什么?