对c ++中向量的查询

时间:2017-10-19 06:41:15

标签: c++ vector

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循环中的变量。这不是一个错误吗?

如果我们看到第一个for循环,它表示循环将运行直到i!= g1.end(),这意味着*(g1.end())的值不应该由* i显示但它是给予。 ide显示输出1 2 3 4 5对我来说它应该是1 2 3 4。

1 个答案:

答案 0 :(得分:0)

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

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