I currently have the following for loop:
for(list<string>::iterator jt=it->begin(); jt!=it->end()-1; jt++)
I have a list of strings which is in a larger list (list<list<string> >). I want to loop through the contents of the innerlist until I get to the 2nd to last element. This is because I have already processed the contents of the final element, and have no reason to process them again.
However, using it->end()-1 is invalid — I cannot use the - operator here. While I could use the -- operator, this would decrement this final iterator on each cycle.
I believe a STL list is a doubly linked list, so from my perspective, it should be possible to do this.
Advice? Thanks in advance
Requisite recommendation to use the standard library:
If you don’t want to hassle with creating a functor [I almost never do], and you can’t use reverse iterators, hoist the end check out of the loop:
Or, you can just trust the optimizer to recognize that it doesn’t have to keep recreating the end condition, and do the hoisting itself. How reliable this is depends on the list implementation, and how complex your loop code is, and how good your optimizer is.
At any rate, just do what is easiest for you to understand, and worry about performance after you’re done.