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;
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
add a comment |
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
add a comment |
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
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
c++ c++11
edited Mar 25 at 10:41
Mohammad Usman
21.6k134859
21.6k134859
asked Mar 25 at 6:35
VineetVineet
359411
359411
add a comment |
add a comment |
4 Answers
4
active
oldest
votes
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();
add a comment |
You can take advantage of copy-list-initialization (since C++11) and just write
table.push_back();
add a comment |
Before C++11 sometimes I use x.resize(x.size()+1)
, in C++11 or later you can use x.push_back()
.
add a comment |
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.
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
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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();
add a comment |
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();
add a comment |
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();
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();
edited Mar 25 at 7:12
answered Mar 25 at 6:51
VineetVineet
359411
359411
add a comment |
add a comment |
You can take advantage of copy-list-initialization (since C++11) and just write
table.push_back();
add a comment |
You can take advantage of copy-list-initialization (since C++11) and just write
table.push_back();
add a comment |
You can take advantage of copy-list-initialization (since C++11) and just write
table.push_back();
You can take advantage of copy-list-initialization (since C++11) and just write
table.push_back();
edited Mar 25 at 6:46
answered Mar 25 at 6:37
songyuanyaosongyuanyao
94.4k11182250
94.4k11182250
add a comment |
add a comment |
Before C++11 sometimes I use x.resize(x.size()+1)
, in C++11 or later you can use x.push_back()
.
add a comment |
Before C++11 sometimes I use x.resize(x.size()+1)
, in C++11 or later you can use x.push_back()
.
add a comment |
Before C++11 sometimes I use x.resize(x.size()+1)
, in C++11 or later you can use x.push_back()
.
Before C++11 sometimes I use x.resize(x.size()+1)
, in C++11 or later you can use x.push_back()
.
answered Mar 25 at 6:49
65026502
88k13115218
88k13115218
add a comment |
add a comment |
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.
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
add a comment |
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.
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
add a comment |
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.
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.
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
add a comment |
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
add a comment |
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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