如何访问和删除多重集中的倒数第二个元素?

How can I access and erase every 2nd last element from a multiset?

我最近试图从多集容器中访问倒数第二个元素。在这里,我想首先从容器中打印每个倒数第二个元素,然后将其从容器中删除。这个过程一直持续到容器的大小达到1。

我目前对这个过程的方法如下-

int n;cin>>n;
multiset<int>st;
for(int i=0;i<n;++i)
{
    int x;cin>>x;st.insert(x);
}
while(st.size()!=1)
{
    auto it=st.rbegin();
    prev(it,1);
    cout<<*it<<" ";
    st.erase(*it);
} 

在这里,我对给定案例的预期结果是-

6
0 0 1 0 1 1

ans- 1 1 0 0 0

提前致谢。

找到问题的答案。这里因为我正在使用多重集,所以我不小心删除了 (*it) 的所有副本。所以我只需要先找到值,然后从集合中删除。

st.erase(find(*it))