程序如何写?
我知道,但是循环语句对元素的删除没办法实现。
for(i=0;ilast;i++)
{
for(j=i+1;jlast;j++)
{}
}
如何改进,谢谢!
C确实很难实现……需要自己手动构造函数删除,而且容易在删除后的地方留下空白(就像砍完树后留下的树桩还会绊倒人一样)。
如果你会用vector就好办多了。C++的标准模版库最适合做这种事情了……
1.数据压入push_back()并排序.
vector vecInt;
int nTemp;
for(int i = 0;i >nTemp;
vecInt.pushback(nTemp);
}
sort(vecInt.begin(),vecInt.end());
2.调用unique算法将冗余元素移至容器末尾,并返回此时新容器的迭代器(你就当是指针好了)。此时剩下的元素会自动被排列在一段连续的空间里。
vector vecInt::iterator it = unique (vecInt.begin(),vecInt.end());
3.将容器末尾的冗余元素全部清除
vecInt.erase(it,vecInt.end());
更详细的说明参看陈良乔著《我的第一本C++书》第284页:
“10.5.2 删除容器中的冗余元素”