gpt4 book ai didi

c++ - 在 C++ 中对数字数组进行排序时,是否必须将字符串转换为 double ?

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:08 25 4
gpt4 key购买 nike

我想在 c++ 中对元素为“字符串”类型但应该是数字的数组进行排序(由于某些其他原因,我无法将它们存储为 double 字),如下所示:

vector<string> a;

//assign a with some values, e.g. a=["5.1" "3.5" "1.4" "0.2"]

sort(a.begin(),a.end());

所以我的问题是:在调用排序之前,是否需要将 vector 中的每个元素从字符串转换为 double ? c++ 究竟如何对这样的数组进行排序以及它的精确度如何?谢谢!

最佳答案

do I need to convert each element in the vector from string to double before calling sort?

这取决于您想要实现的顺序,以及存储在数组中的数字。如果所有数字在点之前只有一位数字,您将看不出有什么不同;如果某些数字的整数部分是多位数字,则您的排序将不正确,因为字符串是按字母顺序排列的。例如,"2.0""9.0""10.0" 将按如下方式排序:

"10.0", "2.0", "9.0"

就“before calling sort”中的“before”而言,转换不需要发生在排序之前;如果您使用自定义比较函数,您可以随时执行它:

sort(
a.begin()
, a.end()
, [](const string &lhs, const string &rhs) -> bool {
return stod(lhs) < stod(rhs);
}
);

Demo.

关于c++ - 在 C++ 中对数字数组进行排序时,是否必须将字符串转换为 double ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37224899/

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