ggrr
ggrr

Reputation: 7867

How to reverse iterate vector with iterator?

for example:

for(int i=0;i<v.size();i++){

}

is normal order,

for(int i=v.size()-1;i>=0;i--){

}

is reversed order,

how about reverse version of iterator?

for(vector<int>::iterator it=v.begin();it!=v.end();++it){

}

also is there any reverse version of this code style?

for(int i : v){

}

Upvotes: 0

Views: 146

Answers (1)

David
David

Reputation: 28178

Use a reverse iterator:

for(auto it = v.rbegin(); it != v.rend(); ++it){/*...*/}

There is no built in way to do a range based for in reverse, but you could use boost::adaptors::reversed:

for(auto& i : boost::adaptors::reversde(v)){/*...*/}

Upvotes: 5

Related Questions