[分享] AcArray的排序及去除重复
ObjectARX 中几何大都使用 AcArray ,AcArray 的排序可以使用 stl 的 sort 函数, 而且 vector 的 unique 函数可以实现 vector 的“消除重复”, 再使用 vector::erase 函数可以实现真正的消除重复,相关资料可以网上搜索,下面以 AcGeIntArray 为例说明,其它形式的AcArray自己定义比较函数即可本帖隐藏的内容
普通浏览复制代码
static void asdkMyGroupsTest01(void){
AcGeIntArray arrs;
arrs.append(1);
arrs.append(3);
arrs.append(10);
arrs.append(4);
arrs.append(3);
arrs.append(3);
acutPrintf(采用T("\nBefor sort: "));
for (int i=0;i<arrs.length();i++)
{
acutPrintf(采用T("\n%d"),arrs.at(i));
}
//排序
sort(arrs.asArrayPtr(),arrs.asArrayPtr()+arrs.length());
acutPrintf(采用T("\nAfter sort:"));
for (int i=0;i<arrs.length();i++)
{
acutPrintf(采用T("\n%d"),arrs.at(i));
}
//去除重复,只会保留最后重复
int* index=std::unique(arrs.asArrayPtr(),arrs.asArrayPtr()+arrs.length());
acutPrintf(采用T("\nindex=%d,after unique"),*index);
for (int i=0;i<arrs.length();i++)
{
acutPrintf(采用T("\n%d"),arrs.at(i));
}
//删除重复部分
arrs.removeSubArray(*index,arrs.length()-1);
acutPrintf(采用T("\nAfter removeSubarray:"));
for (int i=0;i<arrs.length();i++)
{
acutPrintf(采用T("\n%d"),arrs.at(i));
}
} 运行结果
命令: test01
Befor sort:
1
3
10
4
3
3
After sort:
1
3
3
3
4
10
index=4,after unique
1
3
4
10
4
10
After removeSubarray:
1
3
4
10
页:
[1]