我有大量的字符
char myCharArray[] = { 0x9B,0x3E,0x34,0x87,0xFD,0x24,0xB4,0x64,0xBA,0x80,0x04,0xFD, 0xDF,0x23,0x41,0xEE,0x00,0x00,0x00,0x00,0xAC,0xF9,0x8F,0x00, ... }
如何转换myCharArray to vector<byte>
vector<byte>
您可以检查一系列char作为一个数组std::byte。所以最有效的解决方案是:
char
std::byte
#include <iterator> // for std::begin / end std::vector<std::byte> v( reinterpret_cast<std::byte*>(std::begin(myCharArray)), reinterpret_cast<std::byte*>(std::end(myCharArray)) );
这样,向量就可以预先知道要分配多少内存,并且可以通过 memcpy 或类似的高效例程执行复制,而不是一个接一个地复制字节,并且必须在中间多次重新分配。
EDIT:请注意,此代码仅有效,因为返回类型std::begin在本机数组上保证是一个指针。如果myCharArray例如Astd::vector<char>, then std::begin/end将返回一个迭代器(它可能是也可能不是本机指针)。在这种情况下,您会例如需要使用myCharVector.data() and myCharVector.data() + myCharVector.size()获取指向数组开头和结尾的指针。
std::begin
myCharArray
std::vector<char>
std::begin/end
myCharVector.data()
myCharVector.data() + myCharVector.size()