Adding empty element to declared container without declaring type of element Unicorn Meta Zoo #1: Why another podcast? Announcing the arrival of Valued Associate #679: Cesar Manara Data science time! April 2019 and salary with experience The Ask Question Wizard is Live!How to add element to C++ array?Why can't variables be declared in a switch statement?What are POD types in C++?How do you declare an interface in C++?Meaning of 'const' last in a function declaration of a class?Pretty-print C++ STL containersHow to implement dynamic element container in C++Is it wrong if the standard container element type and std::allocator type are different?Ending lifetime of STL container without calling the destructorenum to string in modern C++11 / C++14 / C++17 and future C++20STL container holding class within declaration of that class

Suing a Police Officer Instead of the Police Department

How would it unbalance gameplay to rule that Weapon Master allows for picking a fighting style?

Will I be more secure with my own router behind my ISP's router?

Writing a T-SQL stored procedure to receive 4 numbers and insert them into a table

Determinant of a matrix with 2 equal rows

false 'Security alert' from Google - every login generates mails from 'no-reply@accounts.google.com'

Raising a bilingual kid. When should we introduce the majority language?

What happened to Viserion in Season 7?

Where can I find how to tex symbols for different fonts?

Are these square matrices always diagonalisable?

When I export an AI 300x60 art board it saves with bigger dimensions

Simulate round-robin tournament draw

How to translate "red flag" into Spanish?

What is the numbering system used for the DSN dishes?

My admission is revoked after accepting the admission offer

Are there existing rules/lore for MTG planeswalkers?

What's called a person who works as someone who puts products on shelves in stores?

Does Prince Arnaud cause someone holding the Princess to lose?

What is the evidence that custom checks in Northern Ireland are going to result in violence?

What was Apollo 13's "Little Jolt" after MECO?

Where to find documentation for `whois` command options?

Protagonist's race is hidden - should I reveal it?

Married in secret, can marital status in passport be changed at a later date?

Why isPrototypeOf() returns false?



Adding empty element to declared container without declaring type of element



Unicorn Meta Zoo #1: Why another podcast?
Announcing the arrival of Valued Associate #679: Cesar Manara
Data science time! April 2019 and salary with experience
The Ask Question Wizard is Live!How to add element to C++ array?Why can't variables be declared in a switch statement?What are POD types in C++?How do you declare an interface in C++?Meaning of 'const' last in a function declaration of a class?Pretty-print C++ STL containersHow to implement dynamic element container in C++Is it wrong if the standard container element type and std::allocator type are different?Ending lifetime of STL container without calling the destructorenum to string in modern C++11 / C++14 / C++17 and future C++20STL container holding class within declaration of that class



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








15















When we use a complicated container in C++, like



std::vector<std::map<std::string, std::set<std::string>>> table;


The only way to add an empty map (which may represent a row or column) is to initialize a new element and push it back. For example with



table.push_back(std::map<std::string, std::set<std::string>>());


Is there any way to avoid redeclaring the type, and just adding the correct typed element?










share|improve this question






























    15















    When we use a complicated container in C++, like



    std::vector<std::map<std::string, std::set<std::string>>> table;


    The only way to add an empty map (which may represent a row or column) is to initialize a new element and push it back. For example with



    table.push_back(std::map<std::string, std::set<std::string>>());


    Is there any way to avoid redeclaring the type, and just adding the correct typed element?










    share|improve this question


























      15












      15








      15








      When we use a complicated container in C++, like



      std::vector<std::map<std::string, std::set<std::string>>> table;


      The only way to add an empty map (which may represent a row or column) is to initialize a new element and push it back. For example with



      table.push_back(std::map<std::string, std::set<std::string>>());


      Is there any way to avoid redeclaring the type, and just adding the correct typed element?










      share|improve this question
















      When we use a complicated container in C++, like



      std::vector<std::map<std::string, std::set<std::string>>> table;


      The only way to add an empty map (which may represent a row or column) is to initialize a new element and push it back. For example with



      table.push_back(std::map<std::string, std::set<std::string>>());


      Is there any way to avoid redeclaring the type, and just adding the correct typed element?







      c++ c++11






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Mar 25 at 10:41









      Mohammad Usman

      21.6k134859




      21.6k134859










      asked Mar 25 at 6:35









      VineetVineet

      364411




      364411






















          4 Answers
          4






          active

          oldest

          votes


















          33














          From CLion's IntelliSense, I later found that one useful method is emplace_back(). This constructs a new object of correct type and adds it to the end of the vector.



          table.emplace_back();





          share|improve this answer
































            24














            You can take advantage of copy-list-initialization (since C++11) and just write



            table.push_back();





            share|improve this answer
































              10














              Before C++11 sometimes I use x.resize(x.size()+1), in C++11 or later you can use x.push_back().






              share|improve this answer






























                5














                Though the other answers are correct, I will add that if you couldn't take that approach, you could have benefitted from declaring some type aliases to shorten that container type name.



                I can of course only guess at the logical meaning of your containers, which is another thing that this fixes!



                 using PhilosopherNameType = std::string;
                using NeighboursType = std::set<PhilosopherNameType>;
                using NeighbourMapType = std::map<PhilosopherNameType, NeighboursType>;

                std::vector<NeighbourMapType> table;
                table.push_back(NeighbourMapType());


                I mention this because you can likely still benefit from this in other places.






                share|improve this answer


















                • 2





                  agreed. Along the same lines are the types that the STL gives you (vector::value_type iirc)

                  – sudo rm -rf slash
                  Mar 26 at 8:01











                Your Answer






                StackExchange.ifUsing("editor", function ()
                StackExchange.using("externalEditor", function ()
                StackExchange.using("snippets", function ()
                StackExchange.snippets.init();
                );
                );
                , "code-snippets");

                StackExchange.ready(function()
                var channelOptions =
                tags: "".split(" "),
                id: "1"
                ;
                initTagRenderer("".split(" "), "".split(" "), channelOptions);

                StackExchange.using("externalEditor", function()
                // Have to fire editor after snippets, if snippets enabled
                if (StackExchange.settings.snippets.snippetsEnabled)
                StackExchange.using("snippets", function()
                createEditor();
                );

                else
                createEditor();

                );

                function createEditor()
                StackExchange.prepareEditor(
                heartbeatType: 'answer',
                autoActivateHeartbeat: false,
                convertImagesToLinks: true,
                noModals: true,
                showLowRepImageUploadWarning: true,
                reputationToPostImages: 10,
                bindNavPrevention: true,
                postfix: "",
                imageUploader:
                brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
                contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
                allowUrls: true
                ,
                onDemand: true,
                discardSelector: ".discard-answer"
                ,immediatelyShowMarkdownHelp:true
                );



                );













                draft saved

                draft discarded


















                StackExchange.ready(
                function ()
                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55332359%2fadding-empty-element-to-declared-container-without-declaring-type-of-element%23new-answer', 'question_page');

                );

                Post as a guest















                Required, but never shown

























                4 Answers
                4






                active

                oldest

                votes








                4 Answers
                4






                active

                oldest

                votes









                active

                oldest

                votes






                active

                oldest

                votes









                33














                From CLion's IntelliSense, I later found that one useful method is emplace_back(). This constructs a new object of correct type and adds it to the end of the vector.



                table.emplace_back();





                share|improve this answer





























                  33














                  From CLion's IntelliSense, I later found that one useful method is emplace_back(). This constructs a new object of correct type and adds it to the end of the vector.



                  table.emplace_back();





                  share|improve this answer



























                    33












                    33








                    33







                    From CLion's IntelliSense, I later found that one useful method is emplace_back(). This constructs a new object of correct type and adds it to the end of the vector.



                    table.emplace_back();





                    share|improve this answer















                    From CLion's IntelliSense, I later found that one useful method is emplace_back(). This constructs a new object of correct type and adds it to the end of the vector.



                    table.emplace_back();






                    share|improve this answer














                    share|improve this answer



                    share|improve this answer








                    edited Mar 25 at 7:12

























                    answered Mar 25 at 6:51









                    VineetVineet

                    364411




                    364411























                        24














                        You can take advantage of copy-list-initialization (since C++11) and just write



                        table.push_back();





                        share|improve this answer





























                          24














                          You can take advantage of copy-list-initialization (since C++11) and just write



                          table.push_back();





                          share|improve this answer



























                            24












                            24








                            24







                            You can take advantage of copy-list-initialization (since C++11) and just write



                            table.push_back();





                            share|improve this answer















                            You can take advantage of copy-list-initialization (since C++11) and just write



                            table.push_back();






                            share|improve this answer














                            share|improve this answer



                            share|improve this answer








                            edited Mar 25 at 6:46

























                            answered Mar 25 at 6:37









                            songyuanyaosongyuanyao

                            95k11185252




                            95k11185252





















                                10














                                Before C++11 sometimes I use x.resize(x.size()+1), in C++11 or later you can use x.push_back().






                                share|improve this answer



























                                  10














                                  Before C++11 sometimes I use x.resize(x.size()+1), in C++11 or later you can use x.push_back().






                                  share|improve this answer

























                                    10












                                    10








                                    10







                                    Before C++11 sometimes I use x.resize(x.size()+1), in C++11 or later you can use x.push_back().






                                    share|improve this answer













                                    Before C++11 sometimes I use x.resize(x.size()+1), in C++11 or later you can use x.push_back().







                                    share|improve this answer












                                    share|improve this answer



                                    share|improve this answer










                                    answered Mar 25 at 6:49









                                    65026502

                                    88.2k13117218




                                    88.2k13117218





















                                        5














                                        Though the other answers are correct, I will add that if you couldn't take that approach, you could have benefitted from declaring some type aliases to shorten that container type name.



                                        I can of course only guess at the logical meaning of your containers, which is another thing that this fixes!



                                         using PhilosopherNameType = std::string;
                                        using NeighboursType = std::set<PhilosopherNameType>;
                                        using NeighbourMapType = std::map<PhilosopherNameType, NeighboursType>;

                                        std::vector<NeighbourMapType> table;
                                        table.push_back(NeighbourMapType());


                                        I mention this because you can likely still benefit from this in other places.






                                        share|improve this answer


















                                        • 2





                                          agreed. Along the same lines are the types that the STL gives you (vector::value_type iirc)

                                          – sudo rm -rf slash
                                          Mar 26 at 8:01















                                        5














                                        Though the other answers are correct, I will add that if you couldn't take that approach, you could have benefitted from declaring some type aliases to shorten that container type name.



                                        I can of course only guess at the logical meaning of your containers, which is another thing that this fixes!



                                         using PhilosopherNameType = std::string;
                                        using NeighboursType = std::set<PhilosopherNameType>;
                                        using NeighbourMapType = std::map<PhilosopherNameType, NeighboursType>;

                                        std::vector<NeighbourMapType> table;
                                        table.push_back(NeighbourMapType());


                                        I mention this because you can likely still benefit from this in other places.






                                        share|improve this answer


















                                        • 2





                                          agreed. Along the same lines are the types that the STL gives you (vector::value_type iirc)

                                          – sudo rm -rf slash
                                          Mar 26 at 8:01













                                        5












                                        5








                                        5







                                        Though the other answers are correct, I will add that if you couldn't take that approach, you could have benefitted from declaring some type aliases to shorten that container type name.



                                        I can of course only guess at the logical meaning of your containers, which is another thing that this fixes!



                                         using PhilosopherNameType = std::string;
                                        using NeighboursType = std::set<PhilosopherNameType>;
                                        using NeighbourMapType = std::map<PhilosopherNameType, NeighboursType>;

                                        std::vector<NeighbourMapType> table;
                                        table.push_back(NeighbourMapType());


                                        I mention this because you can likely still benefit from this in other places.






                                        share|improve this answer













                                        Though the other answers are correct, I will add that if you couldn't take that approach, you could have benefitted from declaring some type aliases to shorten that container type name.



                                        I can of course only guess at the logical meaning of your containers, which is another thing that this fixes!



                                         using PhilosopherNameType = std::string;
                                        using NeighboursType = std::set<PhilosopherNameType>;
                                        using NeighbourMapType = std::map<PhilosopherNameType, NeighboursType>;

                                        std::vector<NeighbourMapType> table;
                                        table.push_back(NeighbourMapType());


                                        I mention this because you can likely still benefit from this in other places.







                                        share|improve this answer












                                        share|improve this answer



                                        share|improve this answer










                                        answered Mar 25 at 17:12









                                        Lightness Races in OrbitLightness Races in Orbit

                                        296k55480820




                                        296k55480820







                                        • 2





                                          agreed. Along the same lines are the types that the STL gives you (vector::value_type iirc)

                                          – sudo rm -rf slash
                                          Mar 26 at 8:01












                                        • 2





                                          agreed. Along the same lines are the types that the STL gives you (vector::value_type iirc)

                                          – sudo rm -rf slash
                                          Mar 26 at 8:01







                                        2




                                        2





                                        agreed. Along the same lines are the types that the STL gives you (vector::value_type iirc)

                                        – sudo rm -rf slash
                                        Mar 26 at 8:01





                                        agreed. Along the same lines are the types that the STL gives you (vector::value_type iirc)

                                        – sudo rm -rf slash
                                        Mar 26 at 8:01

















                                        draft saved

                                        draft discarded
















































                                        Thanks for contributing an answer to Stack Overflow!


                                        • Please be sure to answer the question. Provide details and share your research!

                                        But avoid


                                        • Asking for help, clarification, or responding to other answers.

                                        • Making statements based on opinion; back them up with references or personal experience.

                                        To learn more, see our tips on writing great answers.




                                        draft saved


                                        draft discarded














                                        StackExchange.ready(
                                        function ()
                                        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55332359%2fadding-empty-element-to-declared-container-without-declaring-type-of-element%23new-answer', 'question_page');

                                        );

                                        Post as a guest















                                        Required, but never shown





















































                                        Required, but never shown














                                        Required, but never shown












                                        Required, but never shown







                                        Required, but never shown

































                                        Required, but never shown














                                        Required, but never shown












                                        Required, but never shown







                                        Required, but never shown







                                        Popular posts from this blog

                                        He _____ here since 1970 . Answer needed [closed]What does “since he was so high” mean?Meaning of “catch birds for”?How do I ensure “since” takes the meaning I want?“Who cares here” meaningWhat does “right round toward” mean?the time tense (had now been detected)What does the phrase “ring around the roses” mean here?Correct usage of “visited upon”Meaning of “foiled rail sabotage bid”It was the third time I had gone to Rome or It is the third time I had been to Rome

                                        Bunad

                                        Færeyskur hestur Heimild | Tengill | Tilvísanir | LeiðsagnarvalRossið - síða um færeyska hrossið á færeyskuGott ár hjá færeyska hestinum