【发布时间】:2015-10-13 00:29:44
【问题描述】:
我知道计算 int 位数的常用方法是使用循环,并一直除以 10 直到它消失。我很好奇能不能先把int转换成字符串,然后统计字符串的长度得到位数(假设只有正整数)?
如果这种方法可行,那么使用循环有什么区别?
【问题讨论】:
-
您是在询问优化问题,但并未尝试进行任何分析来验证您的假设。您假设循环在某种程度上天生就很慢。您似乎忘记了编译器不会直接将您的 C++ 代码转换为机器代码。从中提取C++代码的含义,编译器生成具有相同含义的机器码。 这并不意味着生成的代码将执行与您在 C++ 中编写的代码相同的操作,只是表示效果相同。它的真正含义是什么?通常,循环会消失。个人资料,个人资料,个人资料。
-
我一般会先把整个int转成string,因为这种方法更直接、易懂、可维护,而且我讨厌在int to string方法中硬编码“10”。
-
您可能想看看 Andrei Alexandrescu 就优化提供的演示文稿中的these slides - 他使用和分析的一个示例是精确计算以 10 为底的数字中的数字。