PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

PLM之家PLMHome-国产软件践行者

[资料] 元素是否在vector中,对vector去重,两个vector求交集、并集

[复制链接]

2018-7-2 19:41:23 2219 0

admin 发表于 2018-7-2 19:41:23 |阅读模式

admin 楼主

2018-7-2 19:41:23

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
) L! o/ G. c$ L

' j% s% A% Y; t- q# V5 O! m7 \) kC++虽然对vector封装了大量的函数,比如判断元素是否在vector中find、去重的unique,还有在algorithm类中对两个vector求交集、并集的函数,但是,这些函数是不可以直接vector.XX来使用的,如同在《【C++】容器类》中提到过如何删除vector的其中元素一样,需要搭上迭代器iterator对其进行遍历才能完成这个动作。这是不同于java与c#的,习惯就好。具体如下代码所示:
/ X* d$ |3 F0 h* v) U6 v& t! a[mw_shl_code=cpp,true]#include "iostream"( k) K" z7 m* G/ e# }+ o, m) q
#include "vector"
& n9 Q2 y, {  D# Q' e- p#include "algorithm" //sort函数、交并补函数
4 k3 d0 Z! o( N" b8 P0 W#include "iterator" //求交并补使用到的迭代器
8 W- h8 Q  {- w0 s  Kusing namespace std;2 [+ u9 }  x/ j' S; ?
( u0 d7 C8 p+ Y- R3 X
//打印容器vector
: j+ |  n+ r! A9 ^+ O  l2 t6 ovoid print_vector(vector<int> v){  o' }' R; ^) y9 u8 n; u
        if(v.size()>0){
9 w4 f6 f3 d6 L$ H/ `, W3 h9 p2 Q7 T                cout<<"{";  
3 @- \/ b: H% {& y" T                for(int i=0;i<int(v.size());i++){  6 e$ w  `% t( v7 m- c8 v
                        cout<<v<<",";  
6 z0 z1 e8 z' }; O# a9 Y                }  ( u$ X6 `% O+ f
                cout<<"\b}";  
* C/ n. P0 m+ R( G        }7 U- K' G; `! e, a0 J1 ]
        else{3 s: u0 t) w6 f0 K" i5 C
                cout<<"{}";  I* g: @. r: C8 F2 J
        }9 b0 c# W3 ^0 P' M
}
8 S3 _: }3 ^/ [8 S' j
! ?2 m) H  ~  Y9 I2 W//容器vector中元素的去重9 N8 h  T, G' @: {2 w0 ?$ V
vector<int> unique_element_in_vector(vector<int> v){
3 @2 m7 S2 Q: P9 p' t        vector<int>::iterator vector_iterator;
7 S) |7 A2 F" K& g        sort(v.begin(),v.end());3 u1 @7 [2 n! K3 V9 r) e( I; d
        vector_iterator = unique(v.begin(),v.end());
3 c5 H" I4 G4 Z8 w9 b( p& i, x        if(vector_iterator != v.end()){
$ H) h, \3 O" P                v.erase(vector_iterator,v.end());
" ~- ^' U0 n% t+ U        }
2 F; _* O6 g% m% n  t- m# F        return v;, Z8 ]( y4 i0 j
}* m5 n: _7 n( B
/ ^! D: {# _2 [
//两个vector求交集
5 T6 O" @5 M/ L% L( w( o& V0 u9 Xvector<int> vectors_intersection(vector<int> v1,vector<int> v2){8 K; j* O: i4 P+ a) a; A$ P5 i
        vector<int> v;
+ i$ [* `9 X  G- l! _5 Y, C        sort(v1.begin(),v1.end());   . ]* d6 {4 L9 N+ u! x
        sort(v2.begin(),v2.end());   
# H$ F! Y: u7 X  `) [  K        set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集
$ Y* w" r* e3 X8 Z. Y0 K% S        return v;
3 T* f( ^2 p6 s7 F. y8 J4 |}
$ G, u3 ?* Z; d
9 N) B$ m5 g& I- B+ y0 ?//两个vector求并集0 ~1 m( O2 m+ j3 R7 ?( W  _
vector<int> vectors_set_union(vector<int> v1,vector<int> v2){# g" v8 g1 S4 ^, s  |
        vector<int> v;
# w3 [, H, B: j        sort(v1.begin(),v1.end());   
' \7 @! K% E0 w, U) v- h' c        sort(v2.begin(),v2.end());   # l# F( d* @( i
        set_union(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集 0 j$ U; Q+ l& J" X
        return v;3 S: _! q+ w8 R; j6 J3 @
}
+ Y- y& R8 U6 P6 i& }, V4 k 6 J9 x, M$ F; N
//判断vector的某一元素是否存在& q, |9 A# w# C" b" ]; ?
bool is_element_in_vector(vector<int> v,int element){
, q, n) l& @+ u: r+ U8 M        vector<int>::iterator it;
3 q, ^: i4 ]$ J! z        it=find(v.begin(),v.end(),element);
, F; r6 Z$ q# D  i: e: b0 u  P        if (it!=v.end()){0 z! s! e7 F# B+ J) r9 i1 W
                return true;
4 t$ l5 j4 X' |+ Z! u$ e$ j8 ~- ?        }
% [0 J3 l' O( }3 J        else{3 u( ]" R. s# h# y4 @. v2 U. X& g
                return false;1 a6 J" X; y; @/ c- P  }
        }$ Y9 F1 v$ I9 `2 @
}
2 L/ H0 K/ F# L' f& ]+ S
0 u; F: A# I. z; E1 nint main(){7 E- i3 T+ \7 k& t# B  e
        vector<int> v1,v2,v;
5 A2 w$ S3 e* r' O        v1.push_back(22);v1.push_back(22);v1.push_back(23);v2.push_back(23);v2.push_back(24);
1 V. t. I/ k. s# R3 c8 T: q8 z8 m        cout<<"v1是否存在1这个元素?"<<is_element_in_vector(v1,1)<<endl;/ u" p( Q( j0 m0 J; Y
        cout<<"对v1去重:";% X3 U$ J: D& U
        v1=unique_element_in_vector(v1);' Z  V+ |, z# x* Y
        print_vector(v1);
& H3 n0 Y0 t! z        cout<<endl;
! ~9 j6 k' F  S# U! x& [        cout<<"求v1与v2的交集:";
+ k8 G" i! {5 k- r        v=vectors_intersection(v1,v2);
/ Q% V0 g. N  G# I5 V        print_vector(v);, K/ u  _% v8 _
        cout<<endl;
# u; G! F. M9 a3 m        cout<<"求v1与v2的并集:";
- L* W7 w( i0 Z0 m( \4 o        v=vectors_set_union(v1,v2);' y# d( M$ T: O( g( u; F
        print_vector(v);
$ V0 o3 g0 m* Q6 i: }" ]/ e) t        return 0;
$ C; P% j- n- K! E}[/mw_shl_code]" Y: B% x! V! _1 X( N& Z) V
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了