Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::stack<T,Container>::emplace

      From cppreference.com
      <cpp‎ |container‎ |stack

      [edit template]
       
       
       
       
      template<class...Args>
      void emplace( Args&&...args);
      (since C++11)
      (until C++17)
      template<class...Args>
      decltype(auto) emplace( Args&&...args);
      (since C++17)

      Pushes a new element on top of the stack. The element is constructed in-place, i.e. no copy or move operations are performed. The constructor of the element is called with exactly the same arguments as supplied to the function.

      Effectively callsc.emplace_back(std::forward<Args>(args)...);.

      Contents

      [edit]Parameters

      args - arguments to forward to the constructor of the element

      [edit]Return value

      (none)

      (until C++17)

      The value or reference, if any, returned by the above call toContainer::emplace_back.

      (since C++17)

      [edit]Complexity

      Identical to the complexity ofContainer::emplace_back.

      [edit]Example

      Run this code
      #include <iostream>#include <stack> struct S{int id;     S(int i,double d,std::string s): id{i}{std::cout<<"S::S("<< i<<", "<< d<<",\""<< s<<"\");\n";}}; int main(){std::stack<S> stack;const S& s= stack.emplace(42,3.14,"C++");// for return value C++17 requiredstd::cout<<"id = "<< s.id<<'\n';}

      Output:

      S::S(42, 3.14, "C++")id = 42

      Defect reports

      The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

      DRApplied toBehavior as publishedCorrect behavior
      LWG 2783C++17emplace returnedreference, breaking compatibility with pre-C++17 containersreturnsdecltype(auto)

      [edit]See also

      inserts element at the top
      (public member function)[edit]
      removes the top element
      (public member function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/container/stack/emplace&oldid=133127"

      [8]ページ先頭

      ©2009-2025 Movatter.jp