Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2009, 22:29   #1
Crasty
Пользователь
 
Регистрация: 01.11.2008
Сообщений: 35
По умолчанию Просто STL

Подскажите как с помощью алгоритма for_each можно изменить какой либо
объект. Надо передать в функцию не только тип объекта но и параметр.
Я так понимаю функция должна только унарной или как.
Простой пример:

template <class T>
void Set(T& ob, int a)
{
ob.Set(a);
}

for_each("контейнер".begin(), "контейнер".end(), Set<"объект">(5));
Crasty вне форума Ответить с цитированием
Старый 18.12.2009, 22:37   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Параметр должен быть изменяемым? Напрямую никак нельзя, если не ошибаюсь. Можно создать класс, с перегруженным operator() и в нём хранить нужные переменные, можно написать шаблон, который принимает параметром помимо типа и какое-то значение(но если вы просто хотите заполнить некий массив значениями, то лучше использовать std::fill)
netrino вне форума Ответить с цитированием
Старый 18.12.2009, 22:43   #3
Crasty
Пользователь
 
Регистрация: 01.11.2008
Сообщений: 35
По умолчанию

А этот шаблон не подходит?
template <class T>
void Set(T& ob, int a)
{
ob.Set(a);
}

Если можно поподробнее я не уловил шаблон чего? Функции или ещё чего то.
Crasty вне форума Ответить с цитированием
Старый 19.12.2009, 00:31   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Да, например ф-ции:
Код:
template< class T, T initvalue >
void Set(T& elem)
{
    elem = initvalue;
}

...

vector<int> v(100);
for_each(v.begin(), v.end(), &Set<int, 14>);
Вы лучше скажите, что конкретно нужно сделать, чтобы можно было посоветовать оптимальный вариант для данного случая. Причём зачастую, решения для большинства ситуаций по работе с контейнерами реализованы стандартной библиотекой
netrino вне форума Ответить с цитированием
Старый 19.12.2009, 00:47   #5
Crasty
Пользователь
 
Регистрация: 01.11.2008
Сообщений: 35
По умолчанию

У меня есть объект Point
Class Point
{
int x;
int y;
public:
Point(void){x=0;y=y;}
void Move(int a){x+=a; y+=a;}
}

Есть Set в котором Point-ы, надо с помощью for_each вызвать метод Move
с параметром. Нужна шаблонная функция для этого.
Вот как то так.
Crasty вне форума Ответить с цитированием
Старый 19.12.2009, 01:07   #6
Crasty
Пользователь
 
Регистрация: 01.11.2008
Сообщений: 35
По умолчанию

УААА!!!
Блин как всё просто.
Ну пипец.
Спасибо за потраченное на меня время
Crasty вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
STL Crasty Общие вопросы C/C++ 2 18.12.2009 15:50
STL Cpluser Общие вопросы C/C++ 4 07.05.2009 12:21
STL Cpluser Общие вопросы C/C++ 2 22.02.2009 23:35
[C++]STL Mumriksnus Общие вопросы C/C++ 1 02.07.2008 20:43
Сортировка в STL xz121 Общие вопросы C/C++ 3 09.06.2008 19:30