Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > C++ > Re: STL set/map...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 16 of 17 Topic 45770 of 47017
Post > Topic >>

Re: STL set/map w.r.t const char*

by S S <sarvesh.singh@[EMAIL PROTECTED] > May 6, 2008 at 08:10 AM

On May 6, 5:28 pm, James Kanze <james.ka...@[EMAIL PROTECTED]
> wrote:
> On May 6, 11:58 am, Ian Collins <ian-n...@[EMAIL PROTECTED]
> wrote:
>
>
>
> > S S wrote:
> > > I have a very basic question, but it's a good one. Below is
> > > the code fragment.
> > > struct ltstr
> > > {
> > >   bool operator()(const char* s1, const char* s2) const
> > >   {
> > >     return strcmp(s1, s2) < 0;
> > >   }
> > > };
> > > int main()
> > > {
> > >   const int N =3D 6;
> > >   const char* a[N] =3D {"isomer", "ephemeral", "prosaic",
> > >                       "nugatory", "artichoke", "serif"};
> > >   set<const char*, ltstr> A(a, a + N);
> > >   if (A.find("ephemeral") !=3D A.end())
> > >     cout << "Found";
> > >   else
> > >     cout << "Not found";
> > >   return 0;
> > > }
> > > Output will be -> "Found"
> > > My question is , Why?
> > > How it is able to compare a const char* with another const char* to
> > > find that value? I did not specify any equality operator? I just
> > > mentioned strcmp(s1, s2) < 0
> > > which means, when strcmp(s1, s2) =3D=3D 0 (in case of match)
> > > it will return false. So how set/map are able to find the const
char*
> > > value?
> > Given an ordered set, A < B < C and a search item X,
> > if (X < C) and !(B < X) then X is equivalent to B.
>
> The issue in std::set is a bit more complicated, because the
> domain may include elements which are not members of std::set.
> Basically, set<>::find first locates an element i such that for
> all previous elements j, j < x, and i for i, !(i < x) (which
> implies that the same holds for all following elements, of
> course).  Having found this i, if !(x < i) determines whether
> the elements are equivalent or not: if !(i < x) && !(x < i), the
> elements are considered to be equivalent.
>
> Note the "considered to be".  You can easily define an operator<
> which is inconsistent with =3D=3D.  (He has, in fact: his ltstr is
> inconsistent with =3D=3D over char const*.  Of course, if he were
> also interested in =3D=3D, he'd define an eqstr, which returned
> strcmp(s1, s2) =3D=3D 0.)
>
> --
> James Kanze (GABI Software)             email:james.ka...@[EMAIL PROTECTED]
> Conseils en informatique orient=E9e objet/
>                    Beratung in objektorientierter Datenverarbeitung
> 9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34

Thanks James. It was a really nice explanation, I was linking my ltstr
operator with the find function. find has it's own searching algorithm
as you mentioned, no matter what operator I provide. My operator is
used for arranging the tree while insertion.
There is no meaning providing eqstr operator for set, it defies it's
purpose. I won't be able to add any other element (which differs from
first) to the set except the first one.
 




 17 Posts in Topic:
STL set/map w.r.t const char*
S S <sarvesh.singh@[EM  2008-05-06 02:28:00 
Re: STL set/map w.r.t const char*
"Jim Langston"   2008-05-06 02:38:48 
Re: STL set/map w.r.t const char*
Ian Collins <ian-news@  2008-05-06 21:45:25 
Re: STL set/map w.r.t const char*
dizzy <dizzy@[EMAIL PR  2008-05-06 12:48:27 
Re: STL set/map w.r.t const char*
Ian Collins <ian-news@  2008-05-06 21:58:20 
Re: STL set/map w.r.t const char*
S S <sarvesh.singh@[EM  2008-05-06 03:34:07 
Re: STL set/map w.r.t const char*
S S <sarvesh.singh@[EM  2008-05-06 03:34:45 
Re: STL set/map w.r.t const char*
Ian Collins <ian-news@  2008-05-06 23:02:48 
Re: STL set/map w.r.t const char*
S S <sarvesh.singh@[EM  2008-05-06 03:38:11 
Re: STL set/map w.r.t const char*
Ian Collins <ian-news@  2008-05-06 23:04:47 
Re: STL set/map w.r.t const char*
S S <sarvesh.singh@[EM  2008-05-06 04:01:55 
Re: STL set/map w.r.t const char*
S S <sarvesh.singh@[EM  2008-05-06 04:21:30 
Re: STL set/map w.r.t const char*
dizzy <dizzy@[EMAIL PR  2008-05-06 15:48:36 
Re: STL set/map w.r.t const char*
James Kanze <james.kan  2008-05-06 05:28:54 
Re: STL set/map w.r.t const char*
terminator <farid.mehr  2008-05-06 07:25:33 
Re: STL set/map w.r.t const char*
S S <sarvesh.singh@[EM  2008-05-06 08:10:32 
Re: STL set/map w.r.t const char*
"Andrew Koenig"  2008-05-07 19:10:49 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Thu Jul 24 15:50:39 CDT 2008.