B
bob
Hi,
Given:
1) Custom containers that have nothing to do with vector, deque, list,
map etc,
2) a custom version of new and delete defined for these containers,
customNew and customDelete, say. When an item is to be inserted/removed
into/from these custom containers, customNew and customDelete is
called.
3) Iterators are available for these custom containers which adhere to
the requirements of stl.
e.g.
CustomContainer cc.
cc.add(something); // will call customNew whenever memory needs to be
allocated
cc.remove(something) // will call customDelete whenever memory needs to
be deleted
for (CustomContainer::iterator i = cc.begin(), i!=cc.end(); ++i)
{
// do stuff to each element;
}
Now assuming I have an allocator defined such that customNew and
customDelete will be called instead of the defaults/usual new/delete, I
need to know how arrange things such that customNew and customDelete
will be called for the container by the STL algorithms.
If I look at how I would use custom allocators for say a std::vector,
I would do something like this (given my_allocator is defined)
std::vector<int, my_allocator<int> > intVect;
std::sort(cc.begin(), cc.end()); // sort will use my_allocator for
memory alloc/dealloc etc.
however my custom containers know nothing about allocators. I can get
std::vector to use my_allocator for (de)/allocations, but I can't see
how I can get the stl algorithms to use my_allocator with my custom
containers. I have all the parts but I can't seem to glue them all
together, if that makes sense.
So in order to have this code;
myContainer<int> intCont;
intCont.add(2)); // will call customNew if necessary
intCont.remove(2); // will call customDelete if necessary
// these iterators adhere to the stl requirements for randomaccess
iterators.
myContainer::iterator begin = intCont.begin();
myContainer::iterator end = intCont.end();
// now heres the rub.
std::sort(begin, end);
I want these alorithms to use customNew and customDelete to get memory
if needed,.
I thought I had to use allocators originally but know I'm thinking
thats not the case. What exactly do I need to do to have std::sort
(and other algorithms) use customNew and customDelete.
thanks
Given:
1) Custom containers that have nothing to do with vector, deque, list,
map etc,
2) a custom version of new and delete defined for these containers,
customNew and customDelete, say. When an item is to be inserted/removed
into/from these custom containers, customNew and customDelete is
called.
3) Iterators are available for these custom containers which adhere to
the requirements of stl.
e.g.
CustomContainer cc.
cc.add(something); // will call customNew whenever memory needs to be
allocated
cc.remove(something) // will call customDelete whenever memory needs to
be deleted
for (CustomContainer::iterator i = cc.begin(), i!=cc.end(); ++i)
{
// do stuff to each element;
}
Now assuming I have an allocator defined such that customNew and
customDelete will be called instead of the defaults/usual new/delete, I
need to know how arrange things such that customNew and customDelete
will be called for the container by the STL algorithms.
If I look at how I would use custom allocators for say a std::vector,
I would do something like this (given my_allocator is defined)
std::vector<int, my_allocator<int> > intVect;
std::sort(cc.begin(), cc.end()); // sort will use my_allocator for
memory alloc/dealloc etc.
however my custom containers know nothing about allocators. I can get
std::vector to use my_allocator for (de)/allocations, but I can't see
how I can get the stl algorithms to use my_allocator with my custom
containers. I have all the parts but I can't seem to glue them all
together, if that makes sense.
So in order to have this code;
myContainer<int> intCont;
intCont.add(2)); // will call customNew if necessary
intCont.remove(2); // will call customDelete if necessary
// these iterators adhere to the stl requirements for randomaccess
iterators.
myContainer::iterator begin = intCont.begin();
myContainer::iterator end = intCont.end();
// now heres the rub.
std::sort(begin, end);
I want these alorithms to use customNew and customDelete to get memory
if needed,.
I thought I had to use allocators originally but know I'm thinking
thats not the case. What exactly do I need to do to have std::sort
(and other algorithms) use customNew and customDelete.
thanks