Skip to content

Latest commit

 

History

History
62 lines (47 loc) · 1009 Bytes

emplace.md

File metadata and controls

62 lines (47 loc) · 1009 Bytes

#emplace

template <class... Args>
void emplace(Args&&... args);

##概要 要素型Tのコンストラクタ引数をとり、直接構築でスタックに要素を追加する。

##効果 c.emplace_back(std::forward<Args>(args)...);

##戻り値 なし

##例

#include <iostream>
#include <stack>

struct MyObj
{
  MyObj(int i) { std::cout << i << " "; }
  MyObj(const MyObj&) { std::cout << "copy "; }
  MyObj(const MyObj&&) { std::cout << "move "; }
  MyObj& operator=(const MyObj&) { std::cout << "assign "; }
};

int main ()
{
  std::stack<MyObj> mystack;

  std::cout << "stack::push ";
  for (int i = 0; i < 5; ++i)
  {
    mystack.push(i);
  }
  std::cout << std::endl;

  std::cout << "stack::emplace ";
  for (int i = 0; i < 5; ++i)
  {
    mystack.emplace(i);
  }
  std::cout << std::endl;

  return 0;
}
  • emplace[color ff0000]

##出力

stack::push 0 copy 1 copy 2 copy 3 copy 4 copy
stack::emplace 0 1 2 3 4

##参照