[CSI] CS 3 - Map Internal Implementation
Mikhail Nesterenko
mikhail at cs.kent.edu
Wed Sep 26 08:44:17 EDT 2018
CSI students,
Disregard the previous email. It was meant for the advanced class.
Thanks,
--
Mikhail
Mikhail Nesterenko wrote:
> >
> > I have a quick question about how keys are ordered within maps. Say for
> > example, we have a map that looks like this:
> >
> > map<Student, int> myMap;
> >
> > Where Student is the class that we have been defining over the past two
> > weeks or so. Our class has two member variables; string firstName_ AND
> > string lastName_. How is the key stored and ordered within the map in this
> > case being that there are two strings for member variables within the
> > Student class?
> >
> > Since the key is a class that has member variables and member functions,
> > then how are they keys being traversed? Is it by the first declared private
> > member variable, or the second member variable OR is it even being stored
> > by unique memory address's?
> >
> > What if the key for a map is a different class that has a list and/or
> > vector as private member variables, then what happens?
> >
> > I hope my question makes sense so let me know what you think!
>
> Excellent question!
>
> For the objects to work as keys, the object has to have an overloaded
> comparison operator implemented. The map internally invokes this
> comparison to order map elements.
>
> In the case of Student class, the students are ordered by last name
> and then, if the two are equal, by first name.
>
> If you are curious, try to change this comparison to, for example, order
> them by first name and see the difference in map order.
>
> Thanks,
> --
> Mikhail
More information about the cs13001
mailing list