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

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

admin 楼主

2018-7-2 19:41:23

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

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

x
  C- L1 P$ ?' g0 y5 r+ \0 h3 i1 C& l
# r9 f1 c, i2 e, f" e9 A( P" {0 @4 ?
C++虽然对vector封装了大量的函数,比如判断元素是否在vector中find、去重的unique,还有在algorithm类中对两个vector求交集、并集的函数,但是,这些函数是不可以直接vector.XX来使用的,如同在《【C++】容器类》中提到过如何删除vector的其中元素一样,需要搭上迭代器iterator对其进行遍历才能完成这个动作。这是不同于java与c#的,习惯就好。具体如下代码所示:, I5 F1 O  t$ ~' D# S
[mw_shl_code=cpp,true]#include "iostream"* ^# T" R# r: F( N. A' ^, U
#include "vector" 4 z0 ~5 C* H# d4 \4 Y( i! C
#include "algorithm" //sort函数、交并补函数
5 X7 h9 R" u9 z8 v# k$ @5 p5 t#include "iterator" //求交并补使用到的迭代器% S9 W  G8 Q9 @* x
using namespace std;. t9 t0 d3 `. Q
8 t, \$ A7 C* s( d) ~
//打印容器vector
+ A) L1 \: T) e, c8 O( t6 H2 b2 _+ hvoid print_vector(vector<int> v){
# L! T/ a! z! [4 B" {; O        if(v.size()>0){
9 M9 L* V! D4 p                cout<<"{";  ; ^: q- U4 m/ J. T2 l
                for(int i=0;i<int(v.size());i++){  1 K0 Q& T# L8 V& u
                        cout<<v<<",";  
- i% B: I% n9 p$ ~( [4 ~' I                }  
! l$ j. k% n6 A/ G' [, {( n/ c                cout<<"\b}";  
4 i1 _7 E' m; w" T$ E        }7 n3 G' Z- e+ o# U& h  v/ k7 K
        else{
) B' M# y* t5 m1 a5 e                cout<<"{}";
6 U) o: \! V- H        }  G+ y% X/ B1 ^
}4 T* {" |% |8 X% {2 I! D
* Z- X# C6 ?- j; B! Q
//容器vector中元素的去重- w5 f' a, ?6 |4 I
vector<int> unique_element_in_vector(vector<int> v){  b2 b9 {; b0 G3 H+ W
        vector<int>::iterator vector_iterator;
# u' g( X! r9 ~: k* q; s. L        sort(v.begin(),v.end());
/ {( c4 ~1 }5 \! F        vector_iterator = unique(v.begin(),v.end());; O3 H0 [4 N. u9 w& Z
        if(vector_iterator != v.end()){5 w' j+ A% o* u' j. S
                v.erase(vector_iterator,v.end());/ S- S+ ]' t1 T  H* j7 j
        }% k2 M! ]6 j: O
        return v;% ]( e" p4 ~5 e4 K' W% x; }
}& c( D3 M4 o+ A1 |  I

' G% R& X( s, [# F* O//两个vector求交集' v9 y4 s% Y9 J9 @# T) E2 k  {+ g
vector<int> vectors_intersection(vector<int> v1,vector<int> v2){
. T7 C5 G$ ^  E% i1 x        vector<int> v;* w1 ]% {+ j+ L7 j% |: b2 I
        sort(v1.begin(),v1.end());   
6 D$ v3 ~7 f& J( f- K        sort(v2.begin(),v2.end());   & q" O3 G6 q9 l* P
        set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集 : o) Z: w, [( I8 b3 y, {' N
        return v;
; K( @* W- }) L; N1 q1 k! D}0 P$ {% o) \4 L  o5 _& A

8 `5 R3 e/ D$ W. z6 S8 l. I( B1 F//两个vector求并集
9 O$ `$ c, A  x, X  K5 Uvector<int> vectors_set_union(vector<int> v1,vector<int> v2){8 q6 V! E" _; ^6 N# N0 ~- N
        vector<int> v;
2 t0 ~5 D5 e2 @% D0 W        sort(v1.begin(),v1.end());   & u0 V' e, t6 r4 I% G) C
        sort(v2.begin(),v2.end());   + f( U) A' j. {4 k' I
        set_union(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集
, |4 v. U9 o5 W& \        return v;
+ f* D9 M) q7 x3 t}
8 `0 ?* s; J3 Y+ Z2 S * i) K7 t! A+ L+ u# l
//判断vector的某一元素是否存在
: d4 c: z' ]! J9 }/ o$ L- dbool is_element_in_vector(vector<int> v,int element){
) G; U  w  Q; u) }        vector<int>::iterator it;
) c7 l& W$ L9 c. {9 S) J  ?        it=find(v.begin(),v.end(),element);
' M6 y4 a3 B6 x        if (it!=v.end()){' A5 E5 G8 T1 p  J4 @* e
                return true;
+ p2 t' u2 h# s  r, c: E1 z9 T, w        }3 Y  ?* M4 ^6 s5 i( ^  z$ P
        else{
5 h3 b/ i+ h9 m3 V/ w3 A                return false;/ \' f* ~8 v2 K$ B2 }0 z
        }
+ j" g8 M1 V$ {3 j# \+ _. B}
+ U$ d  c2 a7 `0 O . H2 r' r. A7 i  i  R; J& C
int main(){
0 T5 N5 I8 E/ R5 N2 H' ?7 }- `        vector<int> v1,v2,v;  f% z1 h  J' j! |6 l! i3 D  w
        v1.push_back(22);v1.push_back(22);v1.push_back(23);v2.push_back(23);v2.push_back(24);
& s  z4 }+ [6 n7 N        cout<<"v1是否存在1这个元素?"<<is_element_in_vector(v1,1)<<endl;
1 C4 v3 u& {: c+ u. J+ D5 ]# A* Y        cout<<"对v1去重:";! E6 C2 @$ ?# k) b
        v1=unique_element_in_vector(v1);/ ?3 {) C- J3 H5 z
        print_vector(v1);
$ l' s0 H  ]3 {, E        cout<<endl;
. |/ w  c8 o2 X# y        cout<<"求v1与v2的交集:";. k7 z) O$ t. M  }% y. P- d  e
        v=vectors_intersection(v1,v2);
& F9 X  @6 x/ D        print_vector(v);8 Z! j1 l; w0 {& P, P
        cout<<endl;$ i5 r3 D: J8 N" g
        cout<<"求v1与v2的并集:";
9 T# Z. q  l( b0 }' G' J$ V        v=vectors_set_union(v1,v2);
* r9 S+ X4 w* c7 C! o& K, I2 `6 A! U$ S% C        print_vector(v);( f6 ~) ]& Y) \3 D
        return 0;
9 ~6 Q! W9 G6 m9 H$ `& c# C. M}[/mw_shl_code]
* j1 p& S" z/ ^* L
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了