我想知道以下是否是矢量类型的有效转换:
vector<UINT16> u;
vector<UINT8> v(u.begin(), u.end());
我发现此链接相关: C++ convert vector<int> to vector<double>
但是,需要确认上述转换是否有效。
答案 0 :(得分:3)
std::vector
范围构造函数具体为says:
(3)范围构造函数 构造一个容器,其元素与范围[first,last]一样多,每个元素都由其对应构造 该范围内的元素,顺序相同。
这意味着如果您的UINT16
向量u
有10个元素,v
也会有10个元素。不关心它可能造成的任何溢出。如果有效&#39;你的意思是它会将uint16值神奇地分成2个uint8并将它们添加到v
然后不是,那不是这样。
答案 1 :(得分:1)
来自Windows.h
标题:
typedef unsigned char UINT8, *PUINT8;
typedef unsigned short UINT16, *PUINT16;
Char和Short都可以用作数字。
他们两人之间都有隐含的转换。
是的,它是有效的。 (完全是另一个问题是安全的)
然而,之前的数字&#34;限制&#34;将失去,因为由于向量的性质,这些将被分配以适应&#34;拟合&#34;向量。这可能会导致问题,具体取决于UINT16的值