假设我有一个vector<int> myvec,我想反过来遍历所有元素.我可以想到几种方法:
for (vector<int>::iterator it = myvec.end() - 1; it >= myvec.begin(); --it)
{
// do stuff here
}
for (vector<int>::reverse_iterator rit = myvec.rbegin(); rit != myvec.rend(); ++rit)
{
// do stuff here
}
for (int i = myvec.size() - 1; i >= 0; --i)
{
// do stuff here
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是我什么时候应该使用它们?有区别吗?我知道第一个是危险的,因为如果我传入一个空的向量,那么myvec.end() - 1是未定义的,但是这有什么其他的危险或效率低下吗?