C ++ 0x поддерживает на основе диапазона для :
for (T& object : objects)
object = this * that;
но пока не многие компиляторы поддерживают это (только у gcc 4.6 есть AFAIK). Тем не менее, вы можете использовать std::for_each
с лямбда-функцией, такой как:
std::for_each(objects.begin(), objects.end(), [](T& object) {
object = this * that;
});
Если вам не нравится C ++ 0x, вы можете использовать Boost.Foreach вроде
BOOST_FOREACH(T& object, objects) {
object = this * that;
}
Для std::vector
встроенная поддержка формы =>
отсутствует. Вам нужно вести индекс самостоятельно.
int key = 0;
for (T& object : objects) {
object = formula(key);
++ key;
}
key = 0;
std::for_each(objects.begin(), objects.end(), [&key](T& object) {
object = formula(key);
++ key;
});