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
答
i
被定义为在参数列表中的迭代器。当您在第一个for
循环中重新定义它时,这是一个仅用于循环范围的新定义 - 这是完全合法的,但不是很好的做法。vector::end()
指向内存后最后的项目,而不是最后的项目。所以,是的,矢量中的最后一项将被打印。
什么是'vector'?它是特定的'std :: vector'模板的类型别名吗?在创建应该构建的[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)时,请确保它确实有效。 –
范围界定事项 – coderredoc
至于变量'i','for'循环为其内部的定义创建了自己的范围。 –