Я также хотел бы отметить предостережение Microsoft о цикле «для каждого»;используя контейнеры STL, такие как std :: vector, вы не можете передавать переменные по ссылке, только по значению и константной ссылке.Например:
int myarr [] = {4, 6, 8, 10, 12, 15};
std::vector<int> mvt (myarr, myarr+6);
for each (int & x in mvt) //will not compile for reasons unbeknownst to those outside MS
x+= 4;
Если ваш компилятор поддерживает C ++ 0x на основе диапазона, я бы использовал это вместо этого.Если нет, я бы использовал BOOST_FOREACH или std :: for_each с функциональным объектом или лямбда-выражением, поскольку они переносимы.Что бы вы ни делали, держитесь подальше от Microsoft "для каждого".