你能把一个向量<int64>投射到一个向量<uint8>吗

Can you cast a vector<int64> to a vector<uint8>

本文关键字:一个 向量 gt lt uint8 int64      更新时间:2023-10-16

在C++中,将int64_t向量转换为uint8_t的正确方法是什么?

我知道我可以这样做:

std::vector<int64_t> int64Vec;
std::vector<uint8_t> uint8Vec(int64Vec.begin(), int64Vec.end());

但我认为创建了一个不必要的副本。是否可以转换矢量?

原因是uint8vec被传递给一个需要uint8_t向量的函数。

是否可以转换向量?

不。

原因是uint8vec被传递给一个需要uint8_t向量的函数。

应该修复的是该功能。如果函数接受迭代器(当取消引用时产生可以转换为uint8_t的类型(,则不会有问题:

template <typename IT>
void function( IT begin, IT end);

也许为类型添加健全性检查IT以获取可读的错误消息,以防IT不取消引用可以转换为uint8_t的类型。