明确给出该数字时,我应该参考std ::向量大小
Should I refer std::vector size when the number is explicitly given
我正在使用下面使用std ::向量的简单函数进行编码,其中输入为整数向量,该函数根据向量中的元素数量进行迭代。
在空间和时间效率方面,以下代码合适?Hugeclass实际上是一个大整数,在我放置一个简单的算术时,它包含复杂的算术,以简单。
1)给出了向量的维度
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 ( init; condition; increment ) {
statement(s);
}
这是for循环中的控制流:
首先执行初始步骤,仅执行一次。此步骤使您可以声明并初始化任何循环控制变量。只要出现半隆。
接下来,评估条件。如果是真的,则循环的主体将执行。如果是错误的,则循环的主体不会执行和流动流在for循环之后跳到下一个语句。
for循环执行后,控件的流量跳回增量语句。此语句允许您更新任何循环控制变量。只要条件之后出现半分析,就可以将此语句留为空白。
所以在
的情况下for(int i=0;i<vec.size();i++) {
huge+=vec[i];
}
vec.size()每次都调用,但可能是内衬的,并且可能是一个简单的功能。
上面
一个足够聪明的优化器可能能够推断出它是一个不变的循环,没有副作用并完全效果(如果代码是内衬的,这很容易,但是即使编译器确实可以进行全局,也可能不可能优化)
相关文章:
- std::shared_ptr 自定义参考计数器
- 是否有必要使用 std::move?这不是已经是一个右值参考了吗?
- 为什么const rvalue合格的std ::可选:: value()返回const rvalue参考
- 传递对variadic-templates的引用使用std ::参考 - wrapper
- 将std ::向量作为指针参考
- std ::函数方法参考无法将dword投入到dword64
- 可以std ::移动引起切片时切入L值参考
- 为什么STD :: MOVE将RVALUE参考作为参数
- 使用std ::前进,并带有非矫正,普通的旧参考
- 尽管参数是R值参考,但为什么使用STD ::移动
- 替代STD ::向量存储参考而不是对象的副本
- C++2017 参考 std::vector<std::variant>
- rvalue参考绑定到std ::功能类型的LVALUE
- 明确给出该数字时,我应该参考std ::向量大小
- std ::移动返回和输入参考参数
- 为什么我可以将值可呼叫传递给参考的std ::函数
- 使用std ::转发参考
- STD :: BITSET ::参考对象在STD :: BITSET ::操作员[]中创建的寿命
- 通过STD :: Chrono ::按价值或参考const的持续时间
- C 11 STD参考到Ecmasixt(JavaScript)规格