Adding empty element to declared container without declaring type of element The Next CEO of Stack OverflowHow 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

How does a dynamic QR code work?

Why did the Drakh emissary look so blurred in S04:E11 "Lines of Communication"?

Is it "common practice in Fourier transform spectroscopy to multiply the measured interferogram by an apodizing function"? If so, why?

Does Germany produce more waste than the US?

Is it possible to make a 9x9 table fit within the default margins?

Another proof that dividing by 0 does not exist -- is it right?

Why was Sir Cadogan fired?

Could you use a laser beam as a modulated carrier wave for radio signal?

Incomplete cube

Compensation for working overtime on Saturdays

Can a PhD from a non-TU9 German university become a professor in a TU9 university?

Ising model simulation

That's an odd coin - I wonder why

logical reads on global temp table, but not on session-level temp table

Calculate the Mean mean of two numbers

Why does the freezing point matter when picking cooler ice packs?

Is a distribution that is normal, but highly skewed, considered Gaussian?

Does the Idaho Potato Commission associate potato skins with healthy eating?

pgfplots: How to draw a tangent graph below two others?

Strange use of "whether ... than ..." in official text

What steps are necessary to read a Modern SSD in Medieval Europe?

Shortening a title without changing its meaning

How to pronounce fünf in 45

Traveling with my 5 year old daughter (as the father) without the mother from Germany to Mexico



Adding empty element to declared container without declaring type of element



The Next CEO of Stack OverflowHow 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










13















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




























    13















    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


























      13












      13








      13








      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.5k134758




      21.5k134758










      asked Mar 25 at 6:35









      VineetVineet

      354411




      354411






















          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

                    354411




                    354411























                        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

                            93.9k11182249




                            93.9k11182249





















                                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

                                    87.6k13115218




                                    87.6k13115218





















                                        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

                                        295k54477812




                                        295k54477812







                                        • 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

                                        Adding axes to figuresAdding axes labels to LaTeX figuresLaTeX equivalent of ConTeXt buffersRotate a node but not its content: the case of the ellipse decorationHow to define the default vertical distance between nodes?TikZ scaling graphic and adjust node position and keep font sizeNumerical conditional within tikz keys?adding axes to shapesAlign axes across subfiguresAdding figures with a certain orderLine up nested tikz enviroments or how to get rid of themAdding axes labels to LaTeX figures

                                        Luettelo Yhdysvaltain laivaston lentotukialuksista Lähteet | Navigointivalikko

                                        Gary (muusikko) Sisällysluettelo Historia | Rockin' High | Lähteet | Aiheesta muualla | NavigointivalikkoInfobox OKTuomas "Gary" Keskinen Ancaran kitaristiksiProjekti Rockin' High