c++ - 有什么明确的解释吗?

标签 c++ arrays loops vector integer

我正在尝试学习C++ vector 。这是代码:

#include <iostream>
#include <vector>
using namespace std;
    
int main(){
    
    vector <int> vec;
    
    for(int i=0; i<=10; i++){
        vec.push_back(i);
    }

    for(auto i=vec.begin(); i!=vec.end();i++){
        cout<<*i<<" ";
    }
}
谁能告诉我这部分是什么?
for(auto i=vec.begin(); i!=vec.end();i++){
    cout<<*i<<" ";
}  
我搜索了Internet,但找不到明确的解释。
好的,它会打印出我们将其放入 vector 中的数字,但是我可以得到更多的技术解释吗?

最佳答案

for(auto i=vec.begin(); i!=vec.end();i++){
    cout<<*i<<" ";
}  
这只是C++中的迭代器。
  • begin()函数用于返回指向 vector 第一个元素的迭代器。
  • 类似地,end()函数用于返回指向 vector 最后一个元素的迭代器。
  • auto仅推导变量i的类型。您也可以将其指定为std::vector<int>::iterator i = vec.begin()。这就是您用来遍历 vector 的迭代器的类型。
  • 在上面的代码中,您基本上是从 vector 的开头迭代到 vector 的结尾。
  • 在循环内部,您只是取消引用迭代器并在迭代器当前位置打印值。

  • 上面的代码所执行的操作基本上与以下循环类型相同,该循环类型使用索引在数组上循环:
    for(size_t i = 0; i != vec.size() ; i++){
        cout << vec[i] << " ";
    }
    
    您应该阅读有关迭代器的更多信息,因为迭代器是C++中的核心概念。您可以在这里阅读有关它们的更多信息:
    iterators
    std::vector.begin()
    std::vector.end()

    关于c++ - 有什么明确的解释吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63042690/

    相关文章:

    c++ - 为什么 google styleguide 建议对大整数默认使用可选的 int64_t?

    c++ - 使用指向二维数组的一维指针数组?

    javascript onload 循环中的事件

    loops - 您如何编写代码在 MIPS 中执行阶乘?

    java - 数独 - 循环扫描器

    c++ - 类型特征与静态成员的优势?

    c++ - (C++ 继承)在 STL 容器中存储具有共同父对象的对象

    c++ - 为什么要使用 "PIMPL"成语?

    javascript - super 简单的测验程序。我的答案没有验证,分数也不是++

    C++ TCHAR 数组到 wstring 在 VS2010 中不起作用