gpt4 book ai didi

c++ - 当明确给出数字时,我是否应该引用 std::vector size

转载 作者:行者123 更新时间:2023-11-30 03:35:25 25 4
gpt4 key购买 nike

我在下面使用 std::vector 编写一个简单的函数,其中输入是一个整数 vector ,函数根据 vector 中的元素数量进行迭代。

在空间和时间效率方面,以下哪些代码是合适的?HugeClass 实际上是一个 Big Integer,其中包含复杂的算法,为了简单起见,我在下面放了一个简单的算法。

1) 给出 vector 的维度

void (HugeClass& huge, std::vector<int>& vec, int dim){
for(int i=0;i<dim;i++){
huge+=vec[i];
}
}

2) 调用 std::vector.size() 进行迭代

void (HugeClass& huge, std::vector<int>& vec){
for(int i=0;i<vec.size();i++){
huge+=vec[i];
}
}

dim 可以在 [100,1000000] 范围内

最佳答案

C++中for循环的语法是:

for ( init; condition; increment ) {
statement(s);
}

这是 for 循环中的控制流:

  1. 首先执行 init 步骤,并且只执行一次。此步骤允许您声明和初始化任何循环控制变量。只要出现分号,您就不必在此处放置语句。

  2. 接下来,评估条件。如果为真,则执行循环体。如果为假,则循环体不执行,控制流跳转到 for 循环之后的下一条语句。

  3. for 循环主体执行后,控制流跳回增量语句。此语句允许您更新任何循环控制变量。这个语句可以留空,只要条件后面有一个分号即可。

所以在

的情况下
for(int i=0;i<vec.size();i++) {
huge+=vec[i];
}

vec.size() 每次都会调用,但可能是内联的,并且可能是一个简单的函数。

在其之上

一个足够聪明的优化器可能能够推断出它是一个没有副作用的循环不变式并完全省略它(如果代码是内联的,这会更容易,但即使不是,如果编译器执行全局操作,这也是可能的优化)

关于c++ - 当明确给出数字时,我是否应该引用 std::vector size,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41321045/

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