Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 基于范围的for循环与常规for循环迭代器_C++_Loops - Fatal编程技术网

C++ 基于范围的for循环与常规for循环迭代器

C++ 基于范围的for循环与常规for循环迭代器,c++,loops,C++,Loops,考虑以下代码示例: #include<iostream> #include<vector> #include<typeinfo> int main(){ std::vector<int> v = {1 ,2,4}; for(auto &i:v) std::cout<<typeid(i).name(); for(auto k = v.begin(); k!=v.end();++k) std::cout&

考虑以下代码示例:

#include<iostream>
#include<vector>
#include<typeinfo>

int main(){
    std::vector<int> v = {1 ,2,4};
    for(auto &i:v)  std::cout<<typeid(i).name();
    for(auto k = v.begin(); k!=v.end();++k) std::cout<<typeid(k).name();
    return 0;
}
#包括
#包括
#包括
int main(){
向量v={1,2,4};

对于(auto&i:v)std::cout来说,答案是Magnus已经说过的:是的,这是一种正常行为。范围循环适用于我们对检查集合中的每个项目感兴趣的情况(除非我们更早爆发)对容器本身没有兴趣,就像已经声明的那样,<强>范围循环是以这样的方式优化< <强> >,例如它确实只计算了一次完成条件。在我看来,这是C++中各种循环选项的一个非常好的和欢迎的补充,因为我们经常面对这个非常精确的情况。on:我们得到一个容器,只想以常量或非常量的方式逐个遍历它们。

基于范围的for循环将给出容器元素

例:

向量{5,7,10}

用于(自动i:v)


coutThis is is designed.基于范围的
for
循环为您提供了元素。这是一个足够好的答案吗?它们被设计成这样肯定有原因,我看不出来。是否有任何引用?请注意,这两个循环并不完全相同:显式基于范围的循环计算
end()
在每一个循环中,因此可以适应向量的结构变化(只要它们不会使
k
无效)。基于范围的循环计算
end()
仅在开始时,因此最好将向量的结构留在内部。因此,没有提供更改该结构的方法(即迭代器)是有道理的,但只能使用访问/更改值的方法。@celtschk感谢您的深刻见解:)。我当然不知道。typeid::name返回值是实现定义的。