Hi,

I have a maybe trivial question on how to insert or update a given entry in a multidimensional AA. So I have this AA:

   /// language, chapter, section. Content is a magic struct
   Content[int][string][string] contentAA;

In some part of my code I want to either add a complete new entry or update an existing one. I just came up with this solution but it seems complex to me:

   string language, chapter;
   int section;
   Content* content;
   if (auto l = language in contentAA) {
       if (auto c = chapter in *l) {
              content = section in *c;
       }
   }
   if (!content) {
       contentAA[language][chapter][section] = Content();
       content = &contentAA[language][chapter][section];
   }
/// work with content regardless whether it is updated or newly inserted

My question now is: is there some more elegant solution to achieve this? Something like in C++ when you have std::map's of std::map's and just access the elements and the entry is created implicitly? Basically I would want to just have this line working out of the box:

   content = &contentAA[language][chapter][section];

.. and the AA would make sure the element is created if it didn't exist before. I know I could create a function for that but I am looking for a standard approach that already exists.

Thanks!
André

Reply via email to