Поскольку BOOST_FOREACH
работает с диапазонами, вы можете разбить свой вектор на диапазон, с которым вы хотите работать в обычном режиме (в цикле BOOST_FOREACH
), и на который вы хотите специально обработать:
#include <stdio.h>
#include <vector>
#include "boost/foreach.hpp"
#include "boost/range.hpp"
using namespace std;
int main () {
vector<int> foo;
foo.push_back(1);
foo.push_back(2);
foo.push_back(3);
foo.push_back(4);
vector<int>::iterator special_item(foo.end() - 1);
boost::sub_range< vector<int> > normal_items(foo.begin(), special_item);
BOOST_FOREACH( int i, normal_items) {
printf( "%d ", i);
}
printf( "\nspecial item: %d\n", *special_item);
return 0;
}