通过emplace_back实现push_back

时间:2017-08-03 18:45:18

标签: c++ push move forward emplace

假设我们想要设计一个与C类似的容器std::vector。通过调用push_back来实施emplace_back是一个好主意,例如:

template <typename T>
class C {
  public:
    ...
    template <typename Args...>
    void emplace_back(Args&&... args) { 
      ... // uses T(std::forward<Args>(args)...) internally
    }
    void push_back(T value) {
      emplace_back(std::move(value));
    }
    ...
};

或者,或者:

    template <typename U>
    void push_back(U&& value) {
      emplace_back(std::forward(value));
    }

0 个答案:

没有答案