问题描述
我最近试图从多集容器中访问倒数第二个元素。在这里,我想首先从容器中打印出倒数第二个元素,然后从容器中删除它。这个过程一直持续到容器的大小达到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))