LINUX.ORG.RU

C++ stl


0

0

vector<myClass> v;
int intvar = 15;

remove_if ( v.begin(), v.end(), bind2nd ( equal_to<int>(), intvar )  )

где тут можно написать что it->getId() ?
или только перегружать оператор сравнения == для myClass и int ?

PS: intvar не глобальная поэтому пихать на это место функцию нельзя
anonymous

> где тут можно написать что it->getId() ?

Вопроса не понял.

> PS: intvar не глобальная поэтому пихать на это место функцию нельзя

Тоже не понял. Что конкретно мешает?

UnDeFiNeD
()
Ответ на: комментарий от UnDeFiNeD

вопрос как сделать сравнение результата метода объекта в коллекции с intvar (ессно не городя for'ов а используя remove_if)?

мешает эээ неумение так писать :) чтобы в функцию сравнение передать еще аргумент

anonymous
()
Ответ на: комментарий от anonymous

буста-боязни нету, но проект чистый без нево и я смоневаюсь что обясню нашим прогерам что он нужен

anonymous
()

remove_if ( v.begin(), v.end(), 
           boost::bind(&myClass::getId,_1)==intVar)
           );

kitov ★★★
()
Ответ на: комментарий от BreadFan

да, похоже оно, тока я теперь чето не могу совместить :( - запутался

remove_if ( v.begin(), v.end(), bind1st(mem_fun(&myClass::getId), equal_to<int>(), intvar ) );

как должно быть так тока intvar не пойму куда пихать

anonymous
()

class MySuperPuperComparator {
public:
MySuperPuperComparator (int value) {
m_value = value;
}
bool operator(MyClass v) {
return m_value == v.getId();
}
private:
int m_value;
};

...

MySuperPuperComparator comparator(intvar);
remove_if ( v.begin(), v.end(), comparator);

gaa ★★
()
Ответ на: комментарий от gaa

struct MyComparator : public std::binary_function<int,MyClass,bool>
{
bool operator() (const int v, const MyClass & m)const  {return v == m.getID();}
};

remove_if(v.begin(),v.end(),std::bind1st(MyComparator(),intvar));

Vinick ★★
()
Ответ на: комментарий от Vinick

тоже вариант, спасибо всем большое!

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.