强制转换/转换常量向量<;uint8_t>;对向量进行const<;char>;在c++; 在C++中,将代码转换为>代码> const vector 到代码> const vector < /code >是最有效的方法(这是应该的(未经测试的代码): std::vector v1=//某物; const char*p=(const char*)v1.data(); 向量v2(p,p+v1.size());

强制转换/转换常量向量<;uint8_t>;对向量进行const<;char>;在c++; 在C++中,将代码转换为>代码> const vector 到代码> const vector < /code >是最有效的方法(这是应该的(未经测试的代码): std::vector v1=//某物; const char*p=(const char*)v1.data(); 向量v2(p,p+v1.size());,c++,c++11,c++17,C++,C++11,C++17,现在你有两个向量;一个uint8\u ts和一个chars 一次内存分配,一次调用memcpy [稍后:@Tito指出vector没有(指针、大小)构造函数(如string/span/string\u view)重写示例代码以使用(迭代器、迭代器)构造函数],但肯定不符合标准,如果uint8\u t是typedefed到unsigned char(通常是这样),您可能会得到一个普通的老式C样式Cast,但绝对不符合标准;-)请注意,如果可以解决问题,则可以对内容进行别名problem@M.M你能

现在你有两个向量;一个
uint8\u t
s和一个
chars

一次内存分配,一次调用
memcpy


[稍后:@Tito指出vector没有(指针、大小)构造函数(如
string
/
span
/
string\u view
)重写示例代码以使用(迭代器、迭代器)构造函数]

,但肯定不符合标准,如果
uint8\u t
typedef
ed到
unsigned char
(通常是这样),您可能会得到一个普通的老式C样式Cast,但绝对不符合标准;-)请注意,如果可以解决问题,则可以对内容进行别名problem@M.M你能提供一个将向量别名为常量向量的例子吗?@Tito你可以将内容别名,而不是向量别名。例如,
constchar*p=(constchar*)&v[0]Marschall此类初始化没有匹配的构造函数。你确定这是正确的吗?
std::vector<uint8_t> v1 = // something;
const char *p = (const char *) v1.data();
std::vector<char> v2(p, p + v1.size());