Хочу счетчик в for_each)

Тема в разделе "LANGS.C", создана пользователем Velheart, 15 сен 2009.

  1. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    Из теоретически-эстетического интереса, можно ли код типа
    Код (Text):
    1. ....
    2.           int counter = 0;
    3.           for_each(widths.begin(), widths.end(),
    4.              boost::bind(&CResultListBox::SetColumnWidth, &m_listBox,
    5.                  boost::bind(increment(), boost::ref(counter)) ,_1));
    6. ....
    написать, только чтобы работал?) Да, и только не создавать своих функторов, юзая stl\boost ?
     
  2. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Velheart
    напиши прототип CResultListBox::SetColumnWidth
    и тип элементов контейнера
    и вообще, что ты хочеш сделать-то?
     
  3. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    GoldFinch
    Прототип:
    BOOL SetColumnWidth(_In_ int nCol, _In_ int cx);
    в контейнере -- инты, хочу, чтобы первый параметр был counter по ссылке, который бы заодно инкрементировался в каждой итерации for_each =) , а второй -- соответствующий элемент контейнера
     
  4. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Код (Text):
    1.     int counter = 0;
    2.     BOOST_FOREACH( int cx, widths )
    3.         m_listBox.SetColumnWidth(counter++,cx);
     
  5. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    но если очень хочется именно std::for_each, то
    Код (Text):
    1. using namespace boost::lambda;
    2.     int counter = 0;
    3.     std::for_each(widths.begin(),widths.end(),
    4.         bind(&CResultListBox::SetColumnWidth, &m_listBox, var(counter)++, _1) );
     
  6. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    GoldFinch
    Сенкс! =) Последнее -- именно то, что хотел, бустовский форич несомненно удобней, интерес скорее теоретический был, как-то я пропустил var, когда пытался сам сделать)
     
  7. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Velheart
    ты пытался юзать boost::bind
    а это boost::lambda::bind и boost::lambda::var
     
  8. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    Да я boost::lambda::bind тож пытался, чтобы как-нить выражение составить, но почему-то зациклился на ref, а var в бустовских доках просмотрел =)