PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

[复制链接]

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

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

admin 楼主

2018-7-2 19:41:23

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

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

x

4 a5 |: u, {. z9 `% O9 `4 [
1 n  ?3 P: U- U+ W- ?C++虽然对vector封装了大量的函数,比如判断元素是否在vector中find、去重的unique,还有在algorithm类中对两个vector求交集、并集的函数,但是,这些函数是不可以直接vector.XX来使用的,如同在《【C++】容器类》中提到过如何删除vector的其中元素一样,需要搭上迭代器iterator对其进行遍历才能完成这个动作。这是不同于java与c#的,习惯就好。具体如下代码所示:
0 F8 K& A9 l8 z% T% x[mw_shl_code=cpp,true]#include "iostream"' O0 J9 R/ c7 c9 W* d
#include "vector"
% t8 ~) y8 o: O: p. j#include "algorithm" //sort函数、交并补函数- i0 N. a5 h# l' a
#include "iterator" //求交并补使用到的迭代器
( R/ n  G; K$ A- Eusing namespace std;9 i* `8 U8 R) o7 U( a
- Y6 I+ ?* l. i* P) M! [) ?5 c
//打印容器vector
" V3 S7 l# X* Z( rvoid print_vector(vector<int> v){% i8 @' S9 N' v* `& z
        if(v.size()>0){, d- l1 g! m0 k2 ]
                cout<<"{";  " `1 k! P6 N- l: i( a4 X. j
                for(int i=0;i<int(v.size());i++){  8 o9 d4 j7 n) U2 ?8 [* J* A: a! z% C
                        cout<<v<<",";  " L5 M7 w' z8 ]) |) o% m
                }  
% D( x% w% h3 L# S4 M  P4 V                cout<<"\b}";  0 |! D* E+ b/ s
        }: o- E0 \# S- }7 Z3 D
        else{4 i9 Z) I6 z2 H  t# _" P: u- {8 u
                cout<<"{}";
: Q8 `" B" P: C! M' Y        }) p7 {. g! M! y- r4 y- \3 r+ ^
}* Z+ f: y5 h* A8 ]2 p& i9 m0 N

, N3 f5 D& l5 R6 U! i7 n//容器vector中元素的去重) {) s- f+ h2 {- g" j
vector<int> unique_element_in_vector(vector<int> v){4 u. y2 Z: q0 z( u# L
        vector<int>::iterator vector_iterator;
& H$ J5 y- a* P9 Z        sort(v.begin(),v.end());
1 C. H& s- f. J9 E/ f        vector_iterator = unique(v.begin(),v.end());
% D  ]# W' q) L' X# u1 X        if(vector_iterator != v.end()){% ?; X; A+ |% ]+ V5 F
                v.erase(vector_iterator,v.end());
. ]0 q7 E& y& o9 G& {% n        }$ l: l: w! s5 ^8 S  z  B
        return v;
4 m& h* V2 \' H6 e}& A" _2 O4 ]" I$ E& d* G7 K7 N

. J$ W) @6 g( C& Y. T! n' L//两个vector求交集
2 ~. q: u& R, ]+ Cvector<int> vectors_intersection(vector<int> v1,vector<int> v2){& n1 P4 J. {' {6 o8 \
        vector<int> v;! A* u- Y# z1 n1 ^
        sort(v1.begin(),v1.end());   
+ o' U+ S% x+ y        sort(v2.begin(),v2.end());   ) o# ]! S/ S! m
        set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集
$ T. \) u8 C, W" o3 X5 T# g5 b        return v;" v; w: p' U1 N3 [1 M# D+ T) O
}. X, u/ v8 u# F( X
2 g: v, \* E" `3 d/ Y
//两个vector求并集9 Q- w3 A( s6 @$ O6 U" [+ m
vector<int> vectors_set_union(vector<int> v1,vector<int> v2){4 T+ f3 i* ^, d, ?( Y3 \
        vector<int> v;% w& ?: D( l8 C" X, N! f4 |
        sort(v1.begin(),v1.end());   
% g- n" _" A' c" O/ w  j  K        sort(v2.begin(),v2.end());   - L2 X* U. K5 B/ u7 @. L% B6 S
        set_union(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集
5 g/ p6 _5 Y( X/ l$ A        return v;# x  v3 ^( I& h; i# F
}
* |1 v8 r/ i5 U% g2 X# \) x% S4 \
: V7 |( p# H, g3 U/ }//判断vector的某一元素是否存在
/ F# H- ?  f- bbool is_element_in_vector(vector<int> v,int element){
' N9 c' I8 e+ j( i6 Q/ b2 b        vector<int>::iterator it;% F( I. n6 f% [0 \7 N- Y# E
        it=find(v.begin(),v.end(),element);  f5 m# Z4 k6 q0 Q
        if (it!=v.end()){
8 c+ H3 j. Q5 a1 {& b7 r6 `3 R                return true;
5 S$ k! Y8 L* J+ g5 r        }
2 C, j* H1 j6 k% P2 I        else{
1 F# \0 F& f0 n- K                return false;
2 Y" ]2 c% N; P! m) ^        }
" z8 L+ n6 {5 S- B: g. }3 Q}' W1 |2 L1 u$ H% c" t% J

" s1 I( z( x: Z: cint main(){
- g, _( V+ q3 k: X3 ]/ Y6 |" f        vector<int> v1,v2,v;: D' b/ h$ {, l; ~5 Y5 E( F$ {4 d
        v1.push_back(22);v1.push_back(22);v1.push_back(23);v2.push_back(23);v2.push_back(24);# w! \0 w5 J$ t$ ]' t2 a4 J
        cout<<"v1是否存在1这个元素?"<<is_element_in_vector(v1,1)<<endl;
& N* w' C1 `2 \        cout<<"对v1去重:";
8 x8 l4 _% O1 D: w" `! V/ w        v1=unique_element_in_vector(v1);
& ]4 C( i4 t' o7 x1 j; j. |' \- M        print_vector(v1);3 ~, w2 C2 r/ Z2 N# M! }; d! e+ f9 M$ }
        cout<<endl;; ^; J% A' r) K- v& k8 S2 G' y5 H* s
        cout<<"求v1与v2的交集:";
5 m8 ^0 e( P7 O/ W        v=vectors_intersection(v1,v2);& r6 `0 o8 w9 K6 X2 U$ ]% o: @5 z
        print_vector(v);2 R& [$ F8 M, ^- R# F" I
        cout<<endl;7 X. l+ E; H0 E1 M! ]
        cout<<"求v1与v2的并集:";
5 f" s% T) d8 E: l        v=vectors_set_union(v1,v2);% a+ L- S  m& O; c( [; V
        print_vector(v);
( d& |* L3 p2 ?2 O3 q9 }1 T        return 0;
) O2 l% F& M+ G2 U- U  ~5 @; p" |}[/mw_shl_code]7 b+ i2 N- E- U: _+ \
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了