std::stack
私のコードで、それをソートする必要があります。これを行うための組み込み関数はありますか?なので std::stack
持っていない std::end
。使ってもいいですか std::sort
または、元のスタックをソートするために補助スタックを使用するという同じ古いアプローチに行かなければなりませんか?
template <class T, class U, class Compare>
void sort_stack(std::stack<T,U> &stack, Compare comp)
{
std::vector<T> tmp_container;
tmp_container.reserve(stack.size());
while(!stack.empty())
{
tmp_container.Push_back(std::move(stack.top()));
stack.pop();
}
std::sort(tmp_container.begin(), tmp_container.end(), comp);
for(auto it:tmp_container)
{
stack.Push(std::move(it));
}
}
template <class T, class U>
void sort_stack(std::stack<T,U> &stack)
{
sort_stack(stack, std::less<T>());
}
私の知る限り、スタックをインプレースでソートする方法はありません。ただし、1つの回避策は、追加のスペースを使用することです。