我开始编程,很抱歉我缺乏知识。如何按特定顺序设置向量中的元素?我想以彼此相邻的元素不会相同的方式交换元素。例如向量包含:
{1, 2, 2, 2, 3, 3, 4, 4, 4}
我希望它是这样的:
{1, 2, 4, 3, 4, 2, 3, 2, 4}
感谢帮助。
编辑:再次您好,我发现不是最好的解决方案,也许您可以看看并纠正它?
map<unsigned,unsigned> Map;
for(vector<unsigned>::iterator i=V.begin();i!=V.end();++i)
{
map<unsigned,unsigned>::iterator f=Map.find(*i);
if(f==Map.end()) Map[*i]=1;
else ++f->second;
}
for(bool more=true;more;)
{
more=false;
for(map<unsigned,unsigned>::iterator i=Map.begin();i!=Map.end();++i)
{
if(i->second)
{
--i->second;
cout<<i->first<<", ";
more=true;
}
}
}
现在,对于 { 1, 2, 2, 2, 3, 3, 4, 4, 4, 4, 4, 4 } 它给了我 { 1, 2, 3, 4, 2, 3, 4, 2, 4, 4, 4, 4 } 而不是 {4, 1, 4, 2, 4, 3, 4, 2, 4, 3, 4, 2 }。如何做呢?谢谢
学分:_13th_Dragon