gpt4 book ai didi

c++ - 在循环中使用 string.length() 是否有效?

转载 作者:可可西里 更新时间:2023-11-01 15:38:20 25 4
gpt4 key购买 nike

例如,假设一个string s是这样的:

for(int x = 0; x < s.length(); x++)

比这更好?

int length = s.length();
for(int x = 0; x < length; x++)

谢谢,乔尔

最佳答案

一般来说,如果结果在迭代过程中没有改变,则应避免在循环的条件部分调用函数。

因此,规范形式是:

for (std::size_t x = 0, length = s.length(); x != length; ++x);

这里注意三件事:

  • 初始化可以初始化多个变量
  • 条件用!=表示而不是 <
  • 我使用前增量而不是后增量

(我还更改了类型,因为负长度是无意义的,字符串接口(interface)是根据 std::string::size_type 定义的,在大多数实现中通常是 std::size_t)。

虽然......我承认它对性能的影响不如对可读性的影响:

  • 双重初始化意味着xlength范围尽可能小
  • 通过记住结果,读者不会怀疑迭代期间长度是否会发生变化
  • 当您不需要使用“旧”值创建临时值时,使用预增量通常更好

简而言之:为手头的工作使用最好的工具:)

关于c++ - 在循环中使用 string.length() 是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5135291/

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