gpt4 book ai didi

c++ - container.end() 和 container.size() 是否内联?

转载 作者:搜寻专家 更新时间:2023-10-31 01:57:28 25 4
gpt4 key购买 nike

我通常会与其他人进行讨论,但我无法确认行为 - 如果 container.end() 和 container.size() 函数是内联的。例如如果我们有这样一个 for 循环:

for (vector<int>::iterator it=v.begin(); it!=v.end(); ++it) {
//...
}

for (size_t k=0; k < v.size(); ++k) {
//...
}

在上述情况下,v.end()和v.size()函数会被重复调用还是

  1. 编译器会内联这些函数
  2. 编译器会创建临时变量
  3. 优化选项 O1..3 会影响 g++ 中的行为吗?

最佳答案

根据定义,所有模板函数都是内联函数。编译器可能会选择使它们成为可调用函数,尤其是在 Debug模式编译时,但最有可能的结果是代码被内联。

有可能但不太可能自动创建临时变量。编译器如何确定 v.end() 或 v.size() 返回值是否会受到循环内代码的影响?我怀疑大多数人不会打扰,尽管我没有任何证据。

关于c++ - container.end() 和 container.size() 是否内联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5615496/

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