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

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

admin 楼主

2018-7-2 19:41:23

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

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

x
' ?' q) Z0 a- K( ~5 M
  I% b+ p& \5 @" S1 m- H" ]
C++虽然对vector封装了大量的函数,比如判断元素是否在vector中find、去重的unique,还有在algorithm类中对两个vector求交集、并集的函数,但是,这些函数是不可以直接vector.XX来使用的,如同在《【C++】容器类》中提到过如何删除vector的其中元素一样,需要搭上迭代器iterator对其进行遍历才能完成这个动作。这是不同于java与c#的,习惯就好。具体如下代码所示:
; I7 [7 Y" R1 y4 C0 k" x+ B- o[mw_shl_code=cpp,true]#include "iostream"0 R: i- C7 p! G2 {3 m
#include "vector" % e9 S* i& f) w! P& `( T
#include "algorithm" //sort函数、交并补函数# p, O* Q- g# O7 k# t. I
#include "iterator" //求交并补使用到的迭代器
* @( H( c8 J  Dusing namespace std;- w/ s- U$ }# m" U: }

1 z. Z+ B) t: r5 Z( p& ~8 U3 B, V//打印容器vector% }9 P* r; I+ R2 y
void print_vector(vector<int> v){
  s* V4 o7 n. z) k  ?  q        if(v.size()>0){
( `) Q' {) l2 s                cout<<"{";  8 Z* }+ a2 a. n- E
                for(int i=0;i<int(v.size());i++){  
% n  I1 e9 M5 c' f& I7 |                        cout<<v<<",";  
8 N7 x3 H/ n# n$ m0 E% Z2 C: I  C                }  
* m7 L( s5 w% F% c$ q0 z$ y                cout<<"\b}";  
  g! ^# I8 K5 h* F/ J8 v        }
" Y8 m; M: R; S/ F        else{4 P( M/ m0 }, W1 y
                cout<<"{}";
$ t  i+ E  _8 u3 p+ d8 N* Z        }4 u6 z* A) m1 |' t! T/ w/ l5 g, Y
}, R8 s5 t4 \( a. h( e6 v

' h3 b- `2 ~7 J//容器vector中元素的去重
/ d( s) B$ c- y' c/ Zvector<int> unique_element_in_vector(vector<int> v){+ z) E3 V3 f$ y2 ~( |& n
        vector<int>::iterator vector_iterator;
) v" b6 Q" y  P) _+ H7 b8 I        sort(v.begin(),v.end());% o& h" K; j* o- C( z& H- Z9 k
        vector_iterator = unique(v.begin(),v.end());
8 p0 {, l$ j) }( s        if(vector_iterator != v.end()){+ @, x' V8 [: u2 |2 G$ u' ]
                v.erase(vector_iterator,v.end());
4 R$ v- {, E. K9 i& l5 _        }
7 U0 G* \' r# Y6 x  d/ T/ {& J        return v;  j' m+ R" c$ m. }& ?0 n
}
) }3 o8 k  m+ G( [7 g/ W # p5 u. h  U# r: {! a2 p; S
//两个vector求交集' F: n( W( i% ?2 j
vector<int> vectors_intersection(vector<int> v1,vector<int> v2){+ E1 D& V) }8 z: K* B9 K$ Q( V  a
        vector<int> v;% l1 S2 P* q7 Q* a' y: \/ F+ D+ m
        sort(v1.begin(),v1.end());   & r. o$ N  d2 T& L; y7 o
        sort(v2.begin(),v2.end());   , h8 m8 b1 h9 v/ k# J
        set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集
* J" u$ H2 o3 g        return v;
9 ]/ ]3 `: N6 t* F}
9 x" F7 l( v, w: O
/ l5 m1 m) [" v) C2 P' V7 e% U- W//两个vector求并集
& C) r, Z$ f! W7 v9 Wvector<int> vectors_set_union(vector<int> v1,vector<int> v2){
1 ~+ f: m$ y  ?$ Y  j# I: f        vector<int> v;
* n1 {' o; F' ?5 l4 u2 Q        sort(v1.begin(),v1.end());   
/ R; S  ?6 p& R' r        sort(v2.begin(),v2.end());   
- V1 @8 M: c4 ]# t: `* m        set_union(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集 - \* Y" X0 W1 n% I
        return v;- E) o' c% q. Z0 `7 p  ~( T, ~
}
. A! c/ R  w( C0 r4 M  J4 H' x5 D
" d/ b1 x0 h; K, ~//判断vector的某一元素是否存在& j" q& g. b" g
bool is_element_in_vector(vector<int> v,int element){
& o- B4 @4 |6 {8 N, P        vector<int>::iterator it;5 x( H$ h5 Y* z
        it=find(v.begin(),v.end(),element);  w2 {5 e' ]: e, ^, q
        if (it!=v.end()){  R3 r! G7 Q; C! x
                return true;
  A9 G( {# d& e6 v% F% c        }
. {8 U- C: b# r8 I7 p' V! X: p        else{
2 |8 H  d& i  O% ~5 a& W                return false;% r. T9 f9 g% ^# v6 Q
        }
* h' b8 R( u* u/ a* ?}
, e4 z! u' C; i6 E+ b& P: ?% ?
% P6 U5 v- E! N! h5 b& iint main(){! R( Y. J3 @; ?5 d$ j7 v
        vector<int> v1,v2,v;
3 @1 ]; A+ Q6 s; Q        v1.push_back(22);v1.push_back(22);v1.push_back(23);v2.push_back(23);v2.push_back(24);$ C% W( z8 M! R0 ~. ]
        cout<<"v1是否存在1这个元素?"<<is_element_in_vector(v1,1)<<endl;1 t: b, R$ t, X- v( M% P9 l
        cout<<"对v1去重:";2 `5 P; e* k: P. Z
        v1=unique_element_in_vector(v1);2 d- [8 o$ N! d
        print_vector(v1);
$ h6 R; u$ x; x3 A- a8 x        cout<<endl;' V4 x: l# a* e
        cout<<"求v1与v2的交集:";
- p( U3 L/ z: w! ], s" A        v=vectors_intersection(v1,v2);& {$ ]2 c" u2 K! r& g3 w
        print_vector(v);4 q9 v/ u  i2 \( i/ e0 E+ H( I
        cout<<endl;; \) ~9 n+ X6 r
        cout<<"求v1与v2的并集:";
- E2 \) w7 ^+ j8 v5 z! P/ B9 X        v=vectors_set_union(v1,v2);$ }% o1 s& N" d
        print_vector(v);! K, h9 N# T: D, }% G
        return 0;
' y3 o9 E& o- ^2 H" I/ l; s& _}[/mw_shl_code]$ p9 S8 e: O" s! B; V# R
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了