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

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

admin 楼主

2018-7-2 19:41:23

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

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

x

0 x+ |* }; f. R* k* C( K+ I2 t3 B5 y+ K- F; X) H5 P# n
C++虽然对vector封装了大量的函数,比如判断元素是否在vector中find、去重的unique,还有在algorithm类中对两个vector求交集、并集的函数,但是,这些函数是不可以直接vector.XX来使用的,如同在《【C++】容器类》中提到过如何删除vector的其中元素一样,需要搭上迭代器iterator对其进行遍历才能完成这个动作。这是不同于java与c#的,习惯就好。具体如下代码所示:
9 {8 O6 M5 O+ h[mw_shl_code=cpp,true]#include "iostream"4 _0 ]5 y2 t2 t  ?
#include "vector" / ~- h. a) f5 A1 `
#include "algorithm" //sort函数、交并补函数
( q2 H& i; r- p* E$ C% Q#include "iterator" //求交并补使用到的迭代器! [% k7 X  ?3 q9 z& _
using namespace std;4 A3 d( E( T/ @
0 y  O4 R7 _- n4 ?1 e: N6 y
//打印容器vector7 ^5 i) u3 l' B3 n! H+ f. |
void print_vector(vector<int> v){; F4 S: n) B  {6 o8 T. H: |# T
        if(v.size()>0){
4 ]4 z. _7 p9 e8 F# T                cout<<"{";  , r  X9 w' _0 m; n
                for(int i=0;i<int(v.size());i++){  
8 x& h( L0 m' v% M1 G                        cout<<v<<",";  7 _% a* C/ _6 ^( }8 G
                }  
- r: q( H) A% ^7 y/ \8 w: I, e                cout<<"\b}";  " v! P, C! K/ g% D
        }9 Z9 l* y, Q' s$ H# E
        else{
6 k3 u7 h6 i; L8 x% Z: _, J& W                cout<<"{}";
$ G' P/ [6 V4 w- C; v" d7 b        }
/ I' T# Y: w$ o6 y1 q$ L" Q$ v- b}! Y3 R: }" |, A" f% T) S

0 z  R  b" c8 q7 d//容器vector中元素的去重
" ]6 k! L8 W9 U# S8 i! ^. ~vector<int> unique_element_in_vector(vector<int> v){
' P: I$ R- H' U5 `1 h        vector<int>::iterator vector_iterator;9 a; N' {$ P% m* d, @
        sort(v.begin(),v.end());
3 t8 U' D/ w" h9 b        vector_iterator = unique(v.begin(),v.end());, J; x2 d* _% R* p
        if(vector_iterator != v.end()){
3 w0 [( n% Z  \. p; c9 S                v.erase(vector_iterator,v.end());$ I# P& y, J. X. ^
        }
, k& i( F) @( R) N        return v;" ~3 D" ?! k) a- c9 [
}7 {, A4 R  E. l9 t3 R; ?/ m( c, H

& P# R7 [. n% n! R6 R//两个vector求交集
: K3 y( {0 x: o9 O! uvector<int> vectors_intersection(vector<int> v1,vector<int> v2){2 t8 F% W, ?8 ^5 ]+ [9 Y# g
        vector<int> v;
6 i7 H$ v+ D1 U5 M7 v        sort(v1.begin(),v1.end());   1 n% M  t( y% Q5 L
        sort(v2.begin(),v2.end());   * T: [3 J5 f, `* ^' m! A7 f8 F
        set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集
  {; R8 h( i- ~2 e        return v;' Q: R& m8 k  Q
}
0 u/ R- K* V# a( p3 G0 a& B  S6 ^ . g% w( q3 s3 _3 f  X2 X
//两个vector求并集
) u/ T' \/ @1 a  g. w- S' Uvector<int> vectors_set_union(vector<int> v1,vector<int> v2){0 z( F* u3 r# b- W2 c$ X! F  p
        vector<int> v;
3 p; o8 @' H) N* K) E0 Q6 s# c5 |        sort(v1.begin(),v1.end());   
0 _# H7 S; F) C. D* _        sort(v2.begin(),v2.end());   
% z8 a" q% \0 j% I, m$ c" b( p- \        set_union(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集
/ C3 y# m$ k7 u+ F: K$ w. ^        return v;
: O) b" G' H1 u3 K7 W& N2 ^}' o7 R1 }8 P, ^- S
9 I4 d0 F! n) }3 r! L1 j
//判断vector的某一元素是否存在
, x, B6 Q  x. \0 Lbool is_element_in_vector(vector<int> v,int element){5 z- C* p" T# @6 j5 }! C, T0 k
        vector<int>::iterator it;5 z  Y4 l2 R# a' p9 k: ~
        it=find(v.begin(),v.end(),element);+ S& q! G$ y* x" k1 T9 y
        if (it!=v.end()){
' X" l9 c* L6 n2 v                return true;
9 }3 h' k" I' ]. ~        }
  O3 _5 P1 _1 L' r. r; b9 a9 L5 L        else{" F1 l9 a3 g  ]! l( m! R
                return false;
: Q3 q* q: @, }0 V5 Y! z        }
* G* C% R' V  T6 b8 E}
0 G* n2 ?+ G2 `7 w" W! J
1 Z9 B) w4 c! G" Qint main(){
* a  t2 m$ p3 _4 m7 C3 d9 Z* w        vector<int> v1,v2,v;: J* c+ s9 C+ L5 _! V
        v1.push_back(22);v1.push_back(22);v1.push_back(23);v2.push_back(23);v2.push_back(24);. l" h9 n; I: u4 @+ h
        cout<<"v1是否存在1这个元素?"<<is_element_in_vector(v1,1)<<endl;1 `7 G% F# p$ Q! f1 e) `& {# t
        cout<<"对v1去重:";
9 T+ m: M0 C# Y- W8 p        v1=unique_element_in_vector(v1);- l+ a9 x+ T2 N5 y4 N  Q% k8 \4 i
        print_vector(v1);
) k8 T4 H7 _( v: m% y. ^        cout<<endl;
3 M3 y6 C. @# A/ B$ ^( `        cout<<"求v1与v2的交集:";( c0 M$ s, z2 `( r
        v=vectors_intersection(v1,v2);
1 ^" u3 m& N' \; E. N+ E        print_vector(v);
# K; }3 O5 v0 T1 ~) {" ~$ f        cout<<endl;
- z" K& u: ^: Y0 `: u* z' b3 O        cout<<"求v1与v2的并集:";
4 p% [4 b1 R5 b1 r2 U  |. e        v=vectors_set_union(v1,v2);9 N7 O$ Z; @9 P2 f
        print_vector(v);
  N0 [$ g1 n6 u  M  `7 m        return 0;% j' B; k& s0 W3 }3 R! q
}[/mw_shl_code]
+ e# _4 e' ?+ x& L" n
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了