我正在寻找一个可以在c ++中将数组的每个元素转换为float类型的函数(就像python中的astype()一样)。 你知道吗?
由于
答案 0 :(得分:3)
您可以将单个项目投射到float
,但不能一次投射整个阵列。
您可以非常轻松地创建float
s的向量,其中包含原始数组中的值,每个向量都单独转换为float
类型:
template <class T, size_t N>
std::vector<float> asFloat(T (&input)[N]) {
return std::vector<float> {input, input+N};
}
但请注意,这会创建一个由原始数组中的值创建的新float
值数组,而根本不会更改/影响原始数组。另请注意,由于这是一个模板,因此可以将其应用于定义从T到float
的转换的任何类型,即使该转换可能没有多大意义或产生特别有用的结果(例如char
):
char input[] = { 'a', 'b', 'c' };
auto result = asFloat(input);
如果您打印出result
的内容,通常会获得:
97 98 99
这是a
,b
和c
在大多数常见字符集(ASCII,Unicode等)中的编码,但那些不是真正的作为浮点值很有意义。
但根据评论,您只是尝试创建float
数组。这里有一些小细节需要处理。一个是你可能真的想要vector
而不是数组。另一个是默认情况下浮点文字的类型为double
。使用float
值初始化double
变量可以(并且经常会)导致可能丢失数据或类似内容的警告。
因此,当您初始化float
的数组或向量时,通常需要包含后缀以强制值键入float
:
std::vector<float> values { 1.0f, 2.0f, 3.0f};