gpt4 book ai didi

c++ - 在循环条件 : why is strlen() called every time, 中,但 vector.size() 只被调用一次?

转载 作者:太空狗 更新时间:2023-10-29 20:01:46 27 4
gpt4 key购买 nike

<分区>

代码:

#include <vector>
#include <cstdio>
#include <cstring>
using namespace std;

void f(const char* s) {
for (size_t i = 0; i < strlen(s); i++) {
printf("%c ", s[i]);
}
}

void g(const vector<int>& v) {
for (size_t i = 0; i < v.size(); i++) {
printf("%d ", v[i]);
}
}

编译链接:https://godbolt.org/z/PCi5yg

你会看到汇编代码:

  • 在函数f()中,每次都会调用strlen(s)
  • 但是在函数 g() 中,v.size() 只被调用一次。

这是为什么?

参数是常量,在内循环中不改变参数。

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