C++中是否有任何等效的函数与 python 中的 astype() 函数等效

Is there any equivalent function in C++ as the astype() function in python?

本文关键字:函数 python 中的 astype 是否 任何 C++      更新时间:2023-10-16

我正在寻找一个函数,它可以在 c++ 中将数组的每个元素转换为浮点类型(就像 astype() 在 python 中所做的那样)。你知道吗?

谢谢

您可以将单个项目强制转换为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

这是最常见的字符集(ASCII,Unicode等)中abc的编码,但这些作为浮点值并没有多大意义。

但是,根据注释,您只是在尝试创建一个float数组。这里有几个小细节需要处理。一个是你可能真的想要一个vector而不是一个数组。另一个是浮点文本默认为 double 类型。使用 double 值初始化 float 变量可能会(并且经常会)导致有关可能丢失数据的警告或类似内容。

因此,当您初始化 float 的数组或向量时,您通常希望包含一个后缀以强制值键入 float

std::vector<float> values { 1.0f, 2.0f, 3.0f};