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 2236 0

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

admin 楼主

2018-7-2 19:41:23

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

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

x
3 u, |  |5 W; |( ^, o* {0 n
2 o3 D$ q: H# g8 ^  W* O7 I
C++虽然对vector封装了大量的函数,比如判断元素是否在vector中find、去重的unique,还有在algorithm类中对两个vector求交集、并集的函数,但是,这些函数是不可以直接vector.XX来使用的,如同在《【C++】容器类》中提到过如何删除vector的其中元素一样,需要搭上迭代器iterator对其进行遍历才能完成这个动作。这是不同于java与c#的,习惯就好。具体如下代码所示:
% M/ }) ]% {% X[mw_shl_code=cpp,true]#include "iostream". t9 V: V; }' t
#include "vector" 9 ^  C" G; f% z6 Y% C
#include "algorithm" //sort函数、交并补函数% j- E/ S( e0 \7 L
#include "iterator" //求交并补使用到的迭代器- o# T- u7 Q5 _9 l
using namespace std;4 y+ h. U8 r+ K* V0 m
: D$ [: ]2 }, }7 {, y9 r
//打印容器vector4 s/ }  O& k$ N& w$ X+ n. F
void print_vector(vector<int> v){1 S+ d  b) k3 A! @% ~" P
        if(v.size()>0){9 {4 }4 U) q6 z! z8 k( \( T! j
                cout<<"{";  ' z- x0 q# `/ J
                for(int i=0;i<int(v.size());i++){  
9 L$ k5 t* P- e9 r; d% n5 y( A* U                        cout<<v<<",";  ) O, V+ V8 Y8 l* `2 m# r
                }  0 o5 Z/ |& t  C, `  y: I4 U& ?
                cout<<"\b}";  
* L+ G- A7 w; B1 j! ^        }( D+ O/ `3 v& e! G6 c" f
        else{
* L8 F3 v) x  e( B7 \) D9 Q9 S                cout<<"{}";% G& G9 i4 y, w9 K! e2 f2 J. p
        }
6 ~$ z1 w4 \0 F; k, |' @( J}) g3 @7 v6 `) y4 Z4 c" b

$ d4 P8 L4 a- i; ?+ m' z" B  m//容器vector中元素的去重& w4 w* x* B- U( |
vector<int> unique_element_in_vector(vector<int> v){# W/ ~: W6 w: r# q3 U$ t
        vector<int>::iterator vector_iterator;$ ]) q) |4 }$ v) r
        sort(v.begin(),v.end());( Z  c6 q) Y. T: s6 R" |* B. S
        vector_iterator = unique(v.begin(),v.end());" d' E) X  s9 `! E/ E
        if(vector_iterator != v.end()){
2 g2 V& N! V! m" V1 `: J) ^                v.erase(vector_iterator,v.end());
' w; f. p, q' ?/ B! h5 e0 R        }
* |: O* v4 r- r) j# h; w: _        return v;
  G; j9 |! w" W2 A, p5 I}7 B/ ]! P' F5 U- t
3 y/ j% P0 U$ N+ ^  Q5 y4 o
//两个vector求交集
8 P4 L! i! G- t9 A3 G( |vector<int> vectors_intersection(vector<int> v1,vector<int> v2){
1 r( d' z# S1 B3 l6 v        vector<int> v;, @3 W  ]+ Q, z$ C, s2 P
        sort(v1.begin(),v1.end());   * r' M! ^, o6 ]1 \$ [
        sort(v2.begin(),v2.end());   7 z2 `$ R' `1 J  ~0 E) n
        set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集 # b/ E1 ~1 z) T+ e( n9 i
        return v;
/ R6 d* ^! J7 H}( n4 @6 Q5 e0 U- t
3 l5 e# S6 N- u* i, K) j! K
//两个vector求并集
, u: c- `. L' C& _* Wvector<int> vectors_set_union(vector<int> v1,vector<int> v2){
; n" }- i6 K' N6 L        vector<int> v;
' J- r2 y2 ^: w' v        sort(v1.begin(),v1.end());   ' f# I8 ?% F- W' Y
        sort(v2.begin(),v2.end());   
& K: U# _4 m$ T( `3 i: G        set_union(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集 6 y) z2 J6 C0 d4 q. s  O
        return v;
8 ]# z8 t6 r! q6 l}
. {) z+ D3 c2 x# H! m( i+ a9 p " e' M' I) i6 D. C* V" S
//判断vector的某一元素是否存在
9 q1 B9 Y, i$ Y; o2 ubool is_element_in_vector(vector<int> v,int element){
1 C  A7 b2 \% O) [" [7 H8 A& @        vector<int>::iterator it;4 @5 a9 R1 i0 ]
        it=find(v.begin(),v.end(),element);
4 }- D+ t8 U! u: l5 u4 `" c        if (it!=v.end()){
( c9 ^1 M+ t3 T' U, J                return true;" f+ _  `! y1 n, l5 X
        }4 d0 @* w. {* p1 [+ m/ L7 h3 q
        else{
0 i& k: b4 s$ R2 T; h6 @                return false;
. j& v4 {8 E8 y3 N$ d, f        }
' }; \# S' a$ x}
3 l8 q# D2 A( ~$ f! d) D+ y& m
3 C; O3 ?3 x$ ?2 T9 U! @) B. xint main(){. k: j/ A6 {2 q: q
        vector<int> v1,v2,v;
! ]3 c2 T0 R/ i. l        v1.push_back(22);v1.push_back(22);v1.push_back(23);v2.push_back(23);v2.push_back(24);. x% g" R6 v0 e0 V5 D$ `6 t9 S, z
        cout<<"v1是否存在1这个元素?"<<is_element_in_vector(v1,1)<<endl;
( W7 q; e8 b" e- S  D        cout<<"对v1去重:";
8 i/ j& B+ w* m' J& ?0 _  G! C6 y        v1=unique_element_in_vector(v1);  }9 X' e+ ^* `
        print_vector(v1);# t3 c0 k9 O0 y, h; ]8 ?
        cout<<endl;
" z2 A7 O" G. j/ _        cout<<"求v1与v2的交集:";
+ g  k+ i! j( T* N0 F5 P6 ~& c' u        v=vectors_intersection(v1,v2);
% h' i; \. Y% q5 U3 }  S        print_vector(v);
4 X/ Q" r* U# m' a        cout<<endl;
# u; g: |7 a. A% V        cout<<"求v1与v2的并集:";
5 \! `) y# P1 n8 D2 W        v=vectors_set_union(v1,v2);1 i+ ~( s0 `. j  W4 x
        print_vector(v);* ^# O9 r1 b# D. Z" g& T
        return 0;
! P% R0 v3 q' V1 c, _! r}[/mw_shl_code]
  d' j1 [% V' H" h& k
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了