在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
的类型。