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

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

admin 楼主

2018-7-2 19:41:23

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

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

x

' \; Q) k1 L* w3 E( f. w! S% f# }3 Q
C++虽然对vector封装了大量的函数,比如判断元素是否在vector中find、去重的unique,还有在algorithm类中对两个vector求交集、并集的函数,但是,这些函数是不可以直接vector.XX来使用的,如同在《【C++】容器类》中提到过如何删除vector的其中元素一样,需要搭上迭代器iterator对其进行遍历才能完成这个动作。这是不同于java与c#的,习惯就好。具体如下代码所示:- \! I1 d" ]/ I2 x; ?
[mw_shl_code=cpp,true]#include "iostream"
7 X0 ?: \3 r+ ^$ Z4 ~#include "vector" 6 s1 D* H) ]8 o1 k0 k
#include "algorithm" //sort函数、交并补函数; J2 p2 `. r0 s' S( k& K
#include "iterator" //求交并补使用到的迭代器
6 L) }$ Q0 W' X8 A4 K/ D. i$ Dusing namespace std;8 [, U" N) ~7 c8 k1 x
$ D3 q; C) _: p- u1 ~" u( c
//打印容器vector
8 O) E& d5 i1 e  W$ _" qvoid print_vector(vector<int> v){
8 U7 |' |" `- r+ d* |        if(v.size()>0){
+ g" }3 s1 b) E2 _1 u' W# W0 Y                cout<<"{";  + `- Z$ G/ R9 v' t
                for(int i=0;i<int(v.size());i++){  
4 B: _# y/ T5 T& O( K& ]% r                        cout<<v<<",";  8 Q4 z1 v9 l& v* ~( V
                }  ! h* E( l5 b2 h+ X( k! M
                cout<<"\b}";  
: q( p" W: w. b5 o( a$ c2 v: `        }
# u+ n+ n& H# l7 Q4 s1 N        else{% H) S6 Q  R  j6 w% O  T6 ?; X9 p
                cout<<"{}";, G9 u' J6 j- S# H7 R
        }
) H4 m( _4 l  [}
9 A& Z# R9 \6 u; v- K# K7 `8 O
% o. S! U7 N" ~; ]% D//容器vector中元素的去重8 W/ e" I8 K6 y2 Z
vector<int> unique_element_in_vector(vector<int> v){
, ]6 C& J+ V5 ]        vector<int>::iterator vector_iterator;9 L$ i+ V: L; a/ ~6 o6 h
        sort(v.begin(),v.end());; f1 k0 {1 b( ?, `% R1 }( Y. G
        vector_iterator = unique(v.begin(),v.end());
/ s/ D" F/ P7 A* Q" P        if(vector_iterator != v.end()){
) j7 Z3 }/ H/ l3 Z                v.erase(vector_iterator,v.end());
; X/ r1 P7 I+ x+ C3 @4 I        }7 k0 M/ n  P6 b, X; R; i. I
        return v;
/ g' r# Y; Q2 e! D, W}
- J9 o( s: r$ t7 _' L
  x* P6 B! V6 e7 J& ]//两个vector求交集  X  l& E+ b( _1 G
vector<int> vectors_intersection(vector<int> v1,vector<int> v2){" I8 q; ^! X2 R  J  h
        vector<int> v;  Y: J& Q2 `' D2 i4 u* t
        sort(v1.begin(),v1.end());   
0 u, G; w$ T/ `/ r        sort(v2.begin(),v2.end());   
, ^& ]/ M% J, l; N2 @        set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集
( D! g4 ?3 I! v: A) _        return v;
: m$ u5 ]+ t, q# \+ a" P2 B}" G. i5 z5 `' s

3 A  H8 L  q$ w//两个vector求并集' b, i' e/ a; c: W# j5 V
vector<int> vectors_set_union(vector<int> v1,vector<int> v2){
- x% Q1 C: R; h; O$ p0 |7 r        vector<int> v;
) a& M) K! J0 G) ~8 Q# k; J! f( o        sort(v1.begin(),v1.end());   ) ~2 r2 m: r& P* k1 K
        sort(v2.begin(),v2.end());   6 x, A4 M9 R; ~  u& Y4 A3 l
        set_union(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集 " \+ I3 u( A% O4 Y$ {  ?
        return v;
' }  P: S6 `) P) ?3 u8 @}
/ c4 v8 y$ |* ?" j; q
) j3 T/ S" `8 }7 f& s2 Q//判断vector的某一元素是否存在
" L6 H$ S# a. {' u# wbool is_element_in_vector(vector<int> v,int element){- j& m0 z- }" |* C( @
        vector<int>::iterator it;) D; G; g9 z- U8 j
        it=find(v.begin(),v.end(),element);
$ N" [  R2 l! x5 A6 {6 v& a, ?        if (it!=v.end()){) Q  E. @; T, k$ n! Q
                return true;* w3 v! P" c# y2 L
        }
6 I% ?* x) L% L0 H% U' s        else{2 R: x3 Z7 j% f0 O) Q
                return false;
0 [: q- f' `0 _+ P! K* K        }
8 A. K! d$ {! O, a" M}
. U5 f, H+ }) _+ C! `# d, v" N ! A! m* ?$ m) W% m
int main(){
) v4 l3 J+ k6 \; H        vector<int> v1,v2,v;# y6 g+ G) w* A6 ?
        v1.push_back(22);v1.push_back(22);v1.push_back(23);v2.push_back(23);v2.push_back(24);, c; I+ o/ _2 T" H' v- {: h
        cout<<"v1是否存在1这个元素?"<<is_element_in_vector(v1,1)<<endl;
8 v, a, _  I: ^0 T- n% K        cout<<"对v1去重:";# |6 O, Z. W1 I' ?
        v1=unique_element_in_vector(v1);& v* H+ N* C- n8 V/ g  m7 j9 a
        print_vector(v1);6 y, }+ d. Y9 U3 A7 D+ M* g
        cout<<endl;
2 R. N# f. ]7 q) G        cout<<"求v1与v2的交集:";
6 ]* Z0 [6 E  U. Z        v=vectors_intersection(v1,v2);- j# Z/ ?: Y5 D, `/ p* j) _2 a
        print_vector(v);/ @& M2 A4 p- l
        cout<<endl;
# k6 P+ w3 d+ f) L/ n0 z" ~( x/ c        cout<<"求v1与v2的并集:";
3 {9 }0 g  d; G/ T7 i' {9 J, J        v=vectors_set_union(v1,v2);( G& C4 I, B# C* r+ E. [
        print_vector(v);% }1 e9 N* r" F( X& k  W+ ~4 v8 I
        return 0;
* H9 i& l/ c( E0 ^1 \}[/mw_shl_code]6 {1 a0 Q8 L- z  F& b/ H
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了