Boost logo

Boost Users :

From: JOAQUIN LOPEZ MU?Z (joaquin_at_[hidden])
Date: 2005-07-16 01:20:07


----- Mensaje original -----
De: Elisha Berns <e.berns_at_[hidden]>
Fecha: Sábado, Julio 16, 2005 3:15 am
Asunto: Re: [Boost-users] Container/Algorithm question

> Joaquin,
>
> Sorry to be the bearer of bad news, but for some reason the multi-
> indexcontainer starts to fail for some larger number of pairs (a few
> hundred). The container doesn't/won't insert them, and to be
> honest, I
> don't have a clue at this point why.

The code is so simple that I fail to see how it can be failing,
so let's insert some traces:

  std::pair<iterator,bool> insert(const value_type& x)
  {
    iterator it0=impl.find(boost::make_tuple(x.first));
    if(it0!=impl.end()){
      typename impl_type::nth_index_iterator<1>::type it1=
        impl.template get<1>().find(x.second);
      if(it1!=impl.template get<1>().end()){
        std::cout<<x.first<<","<<x.second<<std::endl;
        std::cout<<it0->first<<","<<it0->second<<std::endl;
        std::cout<<it1->first<<","<<it1->second<<std::endl;
        return std::make_pair(it0,false);
      }
    }
    return impl.insert(x);
  }

Can you insert the std::cout output sentences above to your code
and report what it's showing? If everything is working OK,
when an insertion fails, x.first==it0->first and
x.second=it1->second. Isn't it so? Can you provide the data
the container is fed with when the first (erroneous) insertion
failure happens?

> If you're up for it you
> might want
> to stress test the code you sent me with thousands of unique pairs and
> redundant pairs.
>

I'll examine this closer next Monday if we
haven't located the problem before.

Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net