gpt4 book ai didi

C++ 困境:关于 std::stoi

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:45:35 31 4
gpt4 key购买 nike

我有一个进退两难的问题,归结为(具体案例比较牵扯):

  1. 连接数字字符 nc 并在最后应用 std::stoi

  2. 初始化 int x=0;。在每次迭代中:x *= 10; x += (nc & 0xCF);

考虑到数字的数量通常总是小于,比方说,6,什么会更有效率?

最佳答案

几乎可以肯定,数字 2 效率更高。它使用常量内存,避免动态分配,并且比 std::stoi 做的工作少(处理交替碱基,因此不太可能优化乘法步骤)

可维护性也是一个考虑因素。愿意动脑筋的程序员应该能够理解#2,尤其是伴随着评论。不幸的是,我的经验是,如果你有任何 cargo 狂热的程序员在你的代码库上工作,他们可能会强烈偏好 #1。

我不确定那个神奇的数字 0xCF , 然而。你不就是想要x += nc - '0';吗? ?它是可移植的,并且是惯用的,更容易理解。用 0xCF 掩蔽另一方面假定 ASCII。没有人对 '0' <= nc && nc <='9' 之外的字符做任何有意义的事情。范围,但如果我使用按位算术,我会用 0x0F 掩码.

关于C++ 困境:关于 std::stoi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22264307/

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