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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.