Re: запустить чужую функцию для каждого элемента вектора
От: jazzer Россия Skype: enerjazzer
Дата: 31.10.07 01:35
Оценка:
Здравствуйте, Пандочка, Вы писали:

П>У меня есть вектор с wstring.

П>
П>std::vector<std::wstring> v;
П>

П>
П>void foo(LPCWSTR a);
П>


П>Хочется что-то вроде static_cast<vector<LPCWSTR>>(v) (это, конечно, ересь).

П>Как это правильно и красиво сделать?

Наверное, что-нть вроде (не компилировал, просто навскидку)
#include <boost/bind.hpp>

void f()
{
  using namespace boost;
  std::for_each(v.begin(), v.end(),
                bind( foo,
                      bind(&std::wstring::c_str, _1)
  ));
}


Еще в бусте есть transform_iterator — можно сделать так, чтобы у тебя итерация сразу шла по x.c_str()
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.