Oh gosh.... how could I oversee THAT? >o<

Allright... now it works and I understand the difference.... Thank you >o<

-----Original Message-----
From: i.nix...@autistici.org <i.nix...@autistici.org>
Sent: 21 October 2020 16:55
To: boost-users@lists.boost.org
Cc: Gaier, Bjoern <bjoern.ga...@horiba.com>
Subject: Re: [Boost-users] [Newbie][Intrusive] - Beginners question

On 2020-10-21 14:33, Gaier, Bjoern via Boost-users wrote:
> Hey everybody,
>
> I looked into the boost intrusive container and played around with it
> a bit. I tried the following code:
> struct animal : public boost::intrusive::list_base_hook<>
> {
>                 std::string name;
>                 int legs;
>
>                 animal(std::string n, int l) : name{std::move(n)},
> legs{l} {} };
>
> int main(int argc, char **argv)
> {
>                 std::vector<animal>            test;
>                 boost::intrusive::list<animal> wuff;
>
>                 for(int n = 0; n < 5; n++)
>                 {
>                                test.push_back(animal("Katze", 4));
>                 }
>
>                 for(int n = 0; n < 5; n++)
>                 {
>                                wuff.push_back(test[n]);
>                 }
>



because `test` has 5 elems:

>                 for(int n = 0; n < 15; n++)
> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
>                 {
>                                wuff.push_back(test[n]);
>                 }



>
>                 for(auto elem : wuff)
>                 {
>                                printf("%s\n", elem.name.c_str());
>                 }
> }
>
> This code does crash! I guess this is because "test" relocated the
> memory and therefor "wuff" lost its references. I would expect the
> same result if I would have a std::list with pointers to animal
> structures - this is why I wonder what the benefit of an intrusive
> container is compared to the same container with just pointers in it.
>
> Hope someone can explain me this! Thank you in advance and kind
> greetings Björn Als GmbH eingetragen im Handelsregister Bad Homburg
> v.d.H. HRB 9816, USt.ID-Nr. DE 114 165 789 Geschäftsführer: Dr.
> Hiroshi Nakamura, Dr.
> Robert Plank, Markus Bode, Heiko Lampert, Takashi Nagano, Junichi
> Tajika, Ergin Cansiz.
>
> _______________________________________________
> Boost-users mailing list
> Boost-users@lists.boost.org
> https://lists.boost.org/mailman/listinfo.cgi/boost-users
Als GmbH eingetragen im Handelsregister Bad Homburg v.d.H. HRB 9816, USt.ID-Nr. 
DE 114 165 789 Geschäftsführer: Dr. Hiroshi Nakamura, Dr. Robert Plank, Markus 
Bode, Heiko Lampert, Takashi Nagano, Junichi Tajika, Ergin Cansiz.
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
https://lists.boost.org/mailman/listinfo.cgi/boost-users

Reply via email to