Re: Java's ArrayList.contains counterpart of MFC CArray?
On Oct 28, 11:03 am, "Giovanni Dicanio"
<giovanniDOTdica...@REMOVEMEgmail.com> wrote:
"divya_rathore" <divyarath...@gmail.com> ha scritto nel messaggionews:de6=
e11b7-d242-4dcc-89fd-94edc21d70c6@g27g2000yqn.googlegroups.com...
I want to check if a particular CPoint exists in a large CArray as
defined above.
CArray doesn't have an inbuilt member function that would do that. So
was looking for existing techniques before writing afresh.
Assuming that you are sure to use CArray and not other data structures (l=
ike
std::set suggested by Goran), you may use a template function something l=
ike
this (which is a thin wrapper on STL find())...
Yes. I even made this to search on an MFC array:
#define ARRAY_BEGIN(array) ((array).GetData())
#define ARRAY_END(array) ((array).GetData()+(array).GetSize())
#define WHOLE_ARRAY(array) ARRAY_BEGIN(array), ARRAY_END(array)
template<class Container, class Item>
bool MyFind(const Container& c, Item i)
{
return std::find(WHOLE_ARRAY(c), i) != ARRAY_END(c);
}
template<class Container, class Predicate>
bool MyFindIf(const Container& c, Predicate p)
{
return std::find_if(WHOLE_ARRAY(c), p) != ARRAY_END(c);
}
Then I call it like so: if (MyFind(someMFCArray, someValue)) blah();
Goran.
P.S. Hey, Giovanni, one could use boost::lambda, but there's a risk of
giving colleagues a headache :-).