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

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

admin 楼主

2018-7-2 19:41:23

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

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

x
* Y' X! k0 r0 L) |  ?. A, }5 [1 c
( z6 N9 [2 v) ~; ?( }' d' l- w* u- d
C++虽然对vector封装了大量的函数,比如判断元素是否在vector中find、去重的unique,还有在algorithm类中对两个vector求交集、并集的函数,但是,这些函数是不可以直接vector.XX来使用的,如同在《【C++】容器类》中提到过如何删除vector的其中元素一样,需要搭上迭代器iterator对其进行遍历才能完成这个动作。这是不同于java与c#的,习惯就好。具体如下代码所示:
. V) T' n0 t: |[mw_shl_code=cpp,true]#include "iostream"
; u1 w, g9 v$ n( v  f) w6 h+ F#include "vector" , a. c* A; g$ S, G4 y: q* ~* u$ f* p
#include "algorithm" //sort函数、交并补函数
; O# c+ J- J1 r1 j1 e& T#include "iterator" //求交并补使用到的迭代器" R  j4 I& {( V; J6 z: d9 D
using namespace std;
4 N, x% |9 u# L  h0 ^! Q# s
" Z3 G! W* h: b5 [) L; J+ n//打印容器vector
* I; `  H  ~/ z6 b. _void print_vector(vector<int> v){
8 Y7 L( `( C& J6 m1 p        if(v.size()>0){9 N4 w+ x6 e: g1 u% I
                cout<<"{";  
9 p% r* s$ z3 c% P& l                for(int i=0;i<int(v.size());i++){    Y$ ~4 n; ?! P, E
                        cout<<v<<",";  
' K1 `$ U! [' u. C6 P                }  
7 w" ^! e& H: W" h0 z                cout<<"\b}";  5 p# p# y" w6 q# L
        }
; ]' j% m/ @! c5 I# j        else{
+ ], a2 [; |" v- j+ s' ]- k& q                cout<<"{}";3 B: i/ A$ `: t' x) `* g
        }/ Y& S: j4 C( T) t
}
+ a6 z2 }0 j+ m% o" w
; e, U  W# W; l0 a7 g. s' V$ @//容器vector中元素的去重5 U# T5 x1 b& ^3 i$ S
vector<int> unique_element_in_vector(vector<int> v){* C6 Y5 W# n; R/ X& w7 _* x3 O
        vector<int>::iterator vector_iterator;* J# @2 }3 C# _
        sort(v.begin(),v.end());
0 j' L5 a6 a! \3 X        vector_iterator = unique(v.begin(),v.end());7 ~& Y1 ?: R7 `! R3 n2 U
        if(vector_iterator != v.end()){0 k/ T# n; V( h+ F- u
                v.erase(vector_iterator,v.end());5 t5 K& t6 M/ a( ^% q* i5 ]# T! `
        }/ f* M2 N6 y4 a& o7 c) e( p0 i* `
        return v;
- f5 |, R. \/ v* f$ j}
1 l+ x) M! i; U+ } 3 R0 U; [2 V1 D! J
//两个vector求交集. V# C+ O$ u5 Z3 G/ b
vector<int> vectors_intersection(vector<int> v1,vector<int> v2){
1 y6 K6 x1 [, w        vector<int> v;& q8 T5 m/ |1 V& \. C
        sort(v1.begin(),v1.end());   4 G. h# x' @3 U+ u# h4 C7 O
        sort(v2.begin(),v2.end());   
; L) I( [6 U" w( r$ j  R        set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集
3 a, x' `# D( w9 _* l6 S        return v;3 h- @- b' I8 C4 K( V, C7 j  F
}
% J9 P1 n5 l+ \
, V& L! N4 u/ L8 j0 P- u//两个vector求并集
( X' S& O: Y, X, m3 _- i  Gvector<int> vectors_set_union(vector<int> v1,vector<int> v2){$ n0 g3 s' a8 w! ]% `, Z0 e
        vector<int> v;
- Q! F+ F! q3 n4 G1 P        sort(v1.begin(),v1.end());   ) w; e3 n" E# H. P3 T
        sort(v2.begin(),v2.end());   + k6 h, b2 i- a7 r
        set_union(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集 3 S/ N$ g2 t5 j$ j2 l% x) K% p7 o; z
        return v;3 v8 E& K$ q9 e0 B
}6 J+ i: j* ~5 F+ V' S& m- ~* y8 E
1 U$ A1 ~, a9 w5 D
//判断vector的某一元素是否存在3 {7 T% K5 o8 q2 h4 U/ T+ A
bool is_element_in_vector(vector<int> v,int element){
) o+ V- Q. r# t" x% d( \        vector<int>::iterator it;. r2 j$ T7 ^# Q. Q: m
        it=find(v.begin(),v.end(),element);1 e% I* j# c! q9 z1 M' y
        if (it!=v.end()){( i- C  X0 e; F* c  Y
                return true;
5 f0 t! G+ M* T: S  |! e* k3 \        }, a7 k) V$ k8 @) I
        else{+ t: T8 w1 m' _$ Z/ a
                return false;5 R# [- Q7 ^* u: A: u6 N; u
        }( C  E. S9 X' e* m) t. Q* T4 ?- j7 [
}; g( F, j1 W& N! d6 X  ]& w3 |
" z! W7 q$ m9 v: n3 ~( [& T
int main(){' w. |9 C' _) g4 H
        vector<int> v1,v2,v;2 O) }; _3 `+ K3 _$ W6 I8 v: w) o( h
        v1.push_back(22);v1.push_back(22);v1.push_back(23);v2.push_back(23);v2.push_back(24);
: O( j$ T" G. P. m( \! v$ O- t, s$ l9 P        cout<<"v1是否存在1这个元素?"<<is_element_in_vector(v1,1)<<endl;) m1 {- B8 a. l" l; e2 t; i
        cout<<"对v1去重:";
7 i7 U! i: r; q$ d& x4 A' o/ ~  a9 Y' d        v1=unique_element_in_vector(v1);
. {$ z) r0 K8 j/ Y" P$ ~        print_vector(v1);
# G* J4 |: y0 t: R$ y$ f) c! \' F        cout<<endl;
9 `$ Y5 T+ D1 T; {  c- A8 ]( D( E  ~        cout<<"求v1与v2的交集:";
7 K; I1 D8 F9 p! E* v        v=vectors_intersection(v1,v2);# F/ k# _$ p! r& k
        print_vector(v);1 {, h* Z* c& ?1 g8 {
        cout<<endl;
- k5 P' a, s) V0 o5 u        cout<<"求v1与v2的并集:";. I! K* @9 t; @+ Q! d
        v=vectors_set_union(v1,v2);, V3 R) R( w: E$ V2 D: N
        print_vector(v);4 K% x0 ]5 k: @1 g, n  S
        return 0;$ L' X6 R  h6 G$ i0 P3 N  P% _# n
}[/mw_shl_code]
) ]' O9 m6 S7 {2 e1 ~
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了