C++中的向量查询

问题描述:

int main() { vector g1; vector :: iterator i; vector :: reverse_iterator ir; 

    for (int i = 1; i <= 5; i++) 
     g1.push_back(i); 

    cout << "Output of begin and end\t:\t"; 
    for (i = g1.begin(); i != g1.end(); ++i) 
     cout << *i << '\t'; 

    cout << endl << endl; 
    cout << "Output of rbegin and rend\t:\t"; 
    for (ir = g1.rbegin(); ir != g1.rend(); ++ir) 
     cout << '\t' << *ir; 

    return 0; 

} 

在这里代码中,变量“i”已被声明为迭代器以及for循环中的变量。这不是一个错误?C++中的向量查询

如果我们看到第一个循环,它会说循环会运行到i!= g1.end(),这意味着*(g1.end())的值不应该被* i显示,但它正在给予。 IDE示出了用于我输出1 2 3 4 5应该是1 2 3 4

+1

什么是'vector'?它是特定的'std :: vector'模板的类型别名吗?在创建应该构建的[最小,完整和可验证示例](http://*.com/help/mcve)时,请确保它确实有效。 –

+0

范围界定事项 – coderredoc

+0

至于变量'i','for'循环为其内部的定义创建了自己的范围。 –

  1. i被定义为在参数列表中的迭代器。当您在第一个for循环中重新定义它时,这是一个仅用于循环范围的新定义 - 这是完全合法的,但不是很好的做法。

  2. vector::end()指向内存最后的项目,而不是最后的项目。所以,是的,矢量中的最后一项将被打印。