在 C++ 中将 const vector<uint8_t> 转换/转换为 const vector<char>
Posted
技术标签:
【中文标题】在 C++ 中将 const vector<uint8_t> 转换/转换为 const vector<char>【英文标题】:Cast/Convert const vector<uint8_t> to const vector<char> in c++ 【发布时间】:2020-06-03 21:10:24 【问题描述】:在 c++ 中将const vector<uint8_t>
转换/转换为const vector<char>
的最高效方法是什么?
【问题讨论】:
虽然绝对不符合标准,但如果uint8_t
是 typedef
ed 到 unsigned char
(通常是这样),您可能可以使用普通的旧 C 风格演员表摆脱困境
绝对不符合标准 ;-)
请注意,如果可以解决问题,您可以为内容设置别名
@M.M 您能否提供一个将向量const char *p = (const char *)&v[0];
【参考方案1】:
这应该可以工作(未经测试的代码):
std::vector<uint8_t> v1 = // something;
const char *p = (const char *) v1.data();
std::vector<char> v2(p, p + v1.size());
现在你有两个向量; uint8_t
s 之一和chars
之一
一次内存分配,一次调用memcpy
。
[后来:@Tito指出vector没有(指针,大小)构造函数(如string
/span
/string_view
)重写示例代码以使用(迭代器,迭代器)构造函数而是]
【讨论】:
Marschall 没有用于此类初始化的匹配构造函数。你确定这是正确的吗?以上是关于在 C++ 中将 const vector<uint8_t> 转换/转换为 const vector<char>的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C++ 中将输入正确读入 2D 向量 vector<vector<int>>
在 C++ 中将 vector<Rect> OpenCV 转换为 vector<vector<float>>
从 MATLAB 生成代码后,在 C++ 中将 vector<> 转换为 emxArray_real_T
如何使用 <numpy/arrayobject.h> 在 c++ 中将数据从 np.array 获取到 std::vector?