将std :: vector中的元素复制到std :: stack c ++中

T M*_*T M 9 c++ stack stl vector c++11

我需要复制std::vectorstd::stack.

  1. 遍历向量并推入堆栈只是方法吗?

  2. 如果还有另一种方式,从性能的角度来看,更好的选择是什么?

码:

 std::stack<A>   m_stack;
 std::vector<A>  m_vec;

 for (auto& elem : m_vec)
 {
    m_stack.push(elem);
 }
Run Code Online (Sandbox Code Playgroud)

Ker*_* SB 12

由于堆栈是容器适配器,因此您可以从基础容器创建堆栈:

std::vector<A> m_vec = /* ... */;
std::stack<A, std::vector<A>> m_stack(m_vec);
Run Code Online (Sandbox Code Playgroud)

或者,如果您希望堆栈被deque支持:

std::stack<A> m_stack(std::deque<A>(m_vec.begin(), m_vec.end()));
Run Code Online (Sandbox Code Playgroud)