请选择 进入手机版 | 继续访问电脑版

唐康林NX二次开发论坛

 找回密码
 立即注册
查看: 862|回复: 2

[技术分享] STL之set集合容器实现排序去重复元素方法!

[复制链接]

555

主题

743

帖子

3380

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3380
发表于 2016-9-11 17:45:30 | 显示全部楼层 |阅读模式
以前在视频里面,我们要将对象放到了一个vector的数组里,然后还想去重复元素,还要排序,我们还是花了不少时间去做。
当时用的是vector的方法。
我在NX官方的例子里面看到他们用了一个新的方法。用set。这个执行效率很高。
在往数据里面放内容的同时,可以实现排序与去重复元素。以下我写的例子。
  1. void MyClass::do_it()
  2. {       
  3.         // TODO: add your code here
  4.         std::set<double> cindata;
  5.         cindata.insert(30.2);
  6.         cindata.insert(1.1);
  7.         cindata.insert(50.3);
  8.         cindata.insert(0.1);
  9.         cindata.insert(100);
  10.         cindata.insert(200);
  11.         cindata.insert(100);

  12.         theSession->ListingWindow()->Open();
  13.         std::ostringstream tempstring;
  14.         std::set<double>::iterator it1;
  15.         for (it1 = cindata.begin(); it1 != cindata.end(); it1++)
  16.         {
  17.                 tempstring << *it1;
  18.                 std::string corvertvalue = tempstring.str();
  19.                 theSession->ListingWindow()->WriteLine(corvertvalue);
  20.                 tempstring.str("");
  21.                 tempstring.clear();
  22.         }
  23. }
复制代码

最后打印出来是:
  1. 0.1
  2. 1.1
  3. 30.2
  4. 50.3
  5. 100
  6. 200
复制代码
可以看到,上面的结果,我们输入的时候,是没有按由小到大去输入的,结果自动由小大到排序。并且输入一个重复元素100,结果只打印了一个出来。
还有一文章,也可以看一下。
http://blog.csdn.net/lyhvoyage/article/details/22989659

回复

使用道具 举报

4

主题

16

帖子

122

积分

终身VIP会员

Rank: 6Rank: 6

积分
122
QQ
发表于 2016-10-1 19:53:03 | 显示全部楼层
这个很实用,谢谢唐工!
回复 支持 反对

使用道具 举报

0

主题

16

帖子

61

积分

见龙在田

Rank: 2

积分
61
发表于 2018-1-9 08:39:19 | 显示全部楼层
感谢分享……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋| ( 蜀ICP备16014681号

GMT+8, 2018-10-17 08:45 , Processed in 0.108764 second(s), 26 queries .

Powered by www.nxopen.cn

© 2001-2013 nxopen.cn

快速回复 返回顶部 返回列表