首页 > 解决方案 > 从 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/称我为重罪犯。我事先承认这一点。我也对涉及复制向量的明显正确答案不感兴趣,显然试图避免在此处复制。

标签: c++vector

解决方案


推荐阅读