Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #80680
| From | Andrey Tarasevich <andreytarasevich@hotmail.com> |
|---|---|
| Newsgroups | comp.lang.c++ |
| Subject | Re: [ #include <stack> ] What's the difference? |
| Date | 2021-07-06 12:50 -0700 |
| Organization | A noiseless patient Spider |
| Message-ID | <sc2c64$ut5$1@dont-email.me> (permalink) |
| References | <sa0877$3h9$1@dont-email.me> <savqan$4de$1@dont-email.me> <sb2t4f$a4d$1@dont-email.me> |
On 6/24/2021 2:23 PM, James Kuyper wrote: > On 6/23/21 1:17 PM, Andrey Tarasevich wrote: >> On 6/11/2021 10:55 AM, SIMON wrote: >>> Does anybody know the significant difference between: >>> >>>> myStack.push(30); >>>> >>>> myStack.emplace(30); >>>> >>> It does the same thing as far as I can see but surely there must be >>> something that I don't know about these two methods. >> >> Without the exact type of 'myStack' the question is meaningless and does >> not have an answer. > > What more do you need to know about the the type of myStack that you > don't already know? > The subject line says "#include <stack>", so you can reasonably presume > from its name that myStack is of type std::stack<T, Container> for some > values of T and Container. I need to know what `T` is. I need to know whether `myStack` holds `int`s, or `myStack` holds something else, perhaps some non-trivial, unrelated, possibly "heavy" type, which just happens to be implicitly convertible from `int`. For `T == int` the difference between the variants would be purely conceptual, without any practical consequences. For a "heavy" `T` the difference between these two variants can be substantial. `push` would construct a temporary followed by two moves from it into a new container entry, while `emplace` would construct a new container entry in-place from the twice-forwarded `30`. -- Best regards, Andrey Tarasevich
Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[ #include <stack> ] What's the difference? SIMON <invalid@invalid.invalid> - 2021-06-11 17:55 +0000
Re: [ #include <stack> ] What's the difference? SIMON <invalid@invalid.invalid> - 2021-06-11 18:08 +0000
Re: [ #include <stack> ] What's the difference? scott@slp53.sl.home (Scott Lurndal) - 2021-06-11 18:21 +0000
Re: [ #include <stack> ] What's the difference? Richard Damon <Richard@Damon-Family.org> - 2021-06-11 14:29 -0400
Re: [ #include <stack> ] What's the difference? Kli-Kla-Klawitter <kliklaklawitter69@gmail.com> - 2021-06-11 20:35 +0200
Re: [ #include <stack> ] What's the difference? Manfred <noname@add.invalid> - 2021-06-12 20:06 +0200
Re: [ #include <stack> ] What's the difference? Kli-Kla-Klawitter <kliklaklawitter69@gmail.com> - 2021-06-12 20:12 +0200
Re: [ #include <stack> ] What's the difference? MrSpook_mlauoyv4F_@o18rpnvgrx0dq.co.uk - 2021-06-13 08:34 +0000
Re: [ #include <stack> ] What's the difference? Öö Tiib <ootiib@hot.ee> - 2021-06-13 04:31 -0700
Re: [ #include <stack> ] What's the difference? Andrey Tarasevich <andreytarasevich@hotmail.com> - 2021-06-23 10:17 -0700
Re: [ #include <stack> ] What's the difference? James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-06-24 17:23 -0400
Re: [ #include <stack> ] What's the difference? Andrey Tarasevich <andreytarasevich@hotmail.com> - 2021-07-06 12:50 -0700
Re: [ #include <stack> ] What's the difference? James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-07-06 21:17 -0400
Re: [ #include <stack> ] What's the difference? Andrey Tarasevich <andreytarasevich@hotmail.com> - 2021-07-06 21:59 -0700
csiph-web