gpt4 book ai didi

c++ - 从较小类型的指针定义的范围构造 vector

转载 作者:搜寻专家 更新时间:2023-10-31 00:53:20 25 4
gpt4 key购买 nike

在下面的代码中,一个vector<int>int8_t 的数组构成.它碰巧有效,但它安全吗?

int8_t *arr;
int arr_size;
... // Filling the array somehow
std::vector<int> v(arr, arr + arr_size); // Is this safe even though we use int8_t* to construct a vector of int?

文档位于 cppreference.com说:

This constructor has the same effect as vector(static_cast<size_type>(first), static_cast<value_type>(last), a) if InputIt is an integral type. (until C++11)

This overload only participates in overload resolution if InputIt satisfies InputIterator, to avoid ambiguity with the overload (2). (since C++11)

这个解释并没有给我关于我的问题的线索。事实上,这让我更加困惑,因为静态转换的模板参数似乎是非常错误的......

最佳答案

是的,这是安全的。所有标准容器都可以从任何迭代器对构造,其中迭代器值类型可以(隐式)转换为容器值类型。这同样适用于 insertassign 等函数。

关于c++ - 从较小类型的指针定义的范围构造 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49089168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com