c++ - 从 std::vector 转换到 std::vector不犯重罪
问题描述
我有一个生成std::vector<uint8_t>
's 的库,我有一个使用 's 的 API std::vector<char>
。我发现自己需要从 A 点到 B 点。
我现在用来做这件事的线路被大多数人认为是“坏的”。
std::vector<std::uint8_t> in {...};
std::vector<char> out;
out = reinterpret_cast<std::vector<char>&&>(in);
但它产生了合理的代码,并且作为一个实际问题在任何地方都有效,尽管它直接违反了严格的别名。我想知道是否有人有一种干净的方式来做到这一点,不会激怒语言律师,并且会让我受到编译器之神的青睐。
我知道这段代码很糟糕,请不要告诉我这段代码很糟糕/UB/称我为重罪犯。我事先承认这一点。我也对涉及复制向量的明显正确答案不感兴趣,显然试图避免在此处复制。
解决方案
推荐阅读
- javascript - 使用 sinon 时出现不一致的 UnhandledPromiseRejectionWarning
- highcharts - 在高图中突出显示区域
- python - 在一个巨大的文件(约 100 万条记录)上 grep 一个长长的(约 2000 个)不同模式列表
- multithreading - 在JMeter中测试时间结束后如何让所有线程完成执行?
- javascript - jQuery 脚本在 jsFiddle 上运行但不在本地
- php - Artisan 控制台命令的本地化
- mysql - 无法建立远程mysql连接
- vba - 合并两个不同表中的数据并在excel中形成一个新表
- c# - 动态调用一个类
- typescript - 几乎任何来自“any”的类型(任何,但一个)