Adding empty element to declared container without declaring type of element The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) The Ask Question Wizard is Live! Data science time! April 2019 and salary with experienceHow 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

The variadic template constructor of my class cannot modify my class members, why is that so?

Do working physicists consider Newtonian mechanics to be "falsified"?

How to politely respond to generic emails requesting a PhD/job in my lab? Without wasting too much time

Semisimplicity of the category of coherent sheaves?

Why is superheterodyning better than direct conversion?

The following signatures were invalid: EXPKEYSIG 1397BC53640DB551

How to split my screen on my Macbook Air?

Did God make two great lights or did He make the great light two?

How should I replace vector<uint8_t>::const_iterator in an API?

How do I add random spotting to the same face in cycles?

University's motivation for having tenure-track positions

Wall plug outlet change

Was credit for the black hole image misattributed?

Why did all the guest students take carriages to the Yule Ball?

Why does the Event Horizon Telescope (EHT) not include telescopes from Africa, Asia or Australia?

Segmentation fault output is suppressed when piping stdin into a function. Why?

Difference between "generating set" and free product?

How is simplicity better than precision and clarity in prose?

How did the audience guess the pentatonic scale in Bobby McFerrin's presentation?

Did the new image of black hole confirm the general theory of relativity?

How are presidential pardons supposed to be used?

When did F become S in typeography, and why?

Mortgage adviser recommends a longer term than necessary combined with overpayments

What is special about square numbers here?



Adding empty element to declared container without declaring type of element



The 2019 Stack Overflow Developer Survey Results Are In
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
The Ask Question Wizard is Live!
Data science time! April 2019 and salary with experienceHow 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;








14















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






























    14















    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


























      14












      14








      14








      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

      359411




      359411






















          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

                    359411




                    359411























                        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

                            94.4k11182250




                            94.4k11182250





















                                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

                                    88k13115218




                                    88k13115218





















                                        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

                                        295k55479816




                                        295k55479816







                                        • 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

                                        How should I support this large drywall patch? Planned maintenance scheduled April 23, 2019 at 00:00UTC (8:00pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?How do I cover large gaps in drywall?How do I keep drywall around a patch from crumbling?Can I glue a second layer of drywall?How to patch long strip on drywall?Large drywall patch: how to avoid bulging seams?Drywall Mesh Patch vs. Bulge? To remove or not to remove?How to fix this drywall job?Prep drywall before backsplashWhat's the best way to fix this horrible drywall patch job?Drywall patching using 3M Patch Plus Primer

                                        random experiment with two different functions on unit interval Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 00:00UTC (8:00pm US/Eastern)Random variable and probability space notionsRandom Walk with EdgesFinding functions where the increase over a random interval is Poisson distributedNumber of days until dayCan an observed event in fact be of zero probability?Unit random processmodels of coins and uniform distributionHow to get the number of successes given $n$ trials , probability $P$ and a random variable $X$Absorbing Markov chain in a computer. Is “almost every” turned into always convergence in computer executions?Stopped random walk is not uniformly integrable

                                        Lowndes Grove History Architecture References Navigation menu32°48′6″N 79°57′58″W / 32.80167°N 79.96611°W / 32.80167; -79.9661132°48′6″N 79°57′58″W / 32.80167°N 79.96611°W / 32.80167; -79.9661178002500"National Register Information System"Historic houses of South Carolina"Lowndes Grove""+32° 48' 6.00", −79° 57' 58.00""Lowndes Grove, Charleston County (260 St. Margaret St., Charleston)""Lowndes Grove"The Charleston ExpositionIt Happened in South Carolina"Lowndes Grove (House), Saint Margaret Street & Sixth Avenue, Charleston, Charleston County, SC(Photographs)"Plantations of the Carolina Low Countrye