PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

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

[复制链接]

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

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

admin 楼主

2018-7-2 19:41:23

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

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

x

* w7 g% S' D& ]8 E6 A- a  X; X8 w
C++虽然对vector封装了大量的函数,比如判断元素是否在vector中find、去重的unique,还有在algorithm类中对两个vector求交集、并集的函数,但是,这些函数是不可以直接vector.XX来使用的,如同在《【C++】容器类》中提到过如何删除vector的其中元素一样,需要搭上迭代器iterator对其进行遍历才能完成这个动作。这是不同于java与c#的,习惯就好。具体如下代码所示:4 s* a# |- h, ]0 x( R+ i: W4 I9 X
[mw_shl_code=cpp,true]#include "iostream"3 U+ {8 g5 U2 c3 K) Y
#include "vector" : `5 p( J1 \2 D- @5 e7 V7 I# L, B
#include "algorithm" //sort函数、交并补函数
1 ?7 f& X, ?7 Y2 v  e- o$ J#include "iterator" //求交并补使用到的迭代器0 @# e; Z: ^) G& L: F1 |! N& s: }
using namespace std;1 O5 o$ o- C, `% A* l8 b
" U# @6 L: x& O$ E5 J) d' Q
//打印容器vector. Y! O# F" O0 r. g9 |% U
void print_vector(vector<int> v){
1 M) p7 }% [# m" k2 M: O3 g/ e) }( z        if(v.size()>0){( W2 u' {% {& k- x
                cout<<"{";  
' o* i  `; a, e5 [% Y& r                for(int i=0;i<int(v.size());i++){  
: g5 @" K3 G. C% n5 _                        cout<<v<<",";  
& o: G% g  `5 N- V$ h                }  
. B9 K$ @! Q% ?% z                cout<<"\b}";  ! q7 S1 P( {; e: m5 y
        }# z$ {+ _( |) @" O
        else{" p7 A' n7 t" c' x6 b; _
                cout<<"{}";
2 N5 M7 L2 k. s6 r9 X" T: U        }7 W5 |! R7 B/ H. n' l
}9 H1 h% b6 {. S  k0 ~: |# q

/ Y$ w# g# d& n: [& Z//容器vector中元素的去重8 B# z# Y8 g: a6 ], V
vector<int> unique_element_in_vector(vector<int> v){; Y+ }3 v, x9 Q" [9 A* X
        vector<int>::iterator vector_iterator;6 b' g# {* H" F9 f0 g% `
        sort(v.begin(),v.end());9 b; e. L8 O$ g8 q. B0 z
        vector_iterator = unique(v.begin(),v.end());
/ W; _( {; Z% z        if(vector_iterator != v.end()){
# k0 q$ _% p: @4 u                v.erase(vector_iterator,v.end());3 f% j* U5 f7 U  X+ M: o
        }2 e, ^8 |) M% T0 _, j
        return v;* [: \! a8 [/ G4 o
}7 Q/ l* Q& |+ D+ x

! c: M. e6 V9 s4 k//两个vector求交集
! k/ f  }$ k8 Q( d% l: Ivector<int> vectors_intersection(vector<int> v1,vector<int> v2){
$ W) y. C. g9 p5 ~% |        vector<int> v;) A8 I& L) E+ X; F! y4 h
        sort(v1.begin(),v1.end());   & ^" X$ K% w- r6 B3 H5 B, m& j
        sort(v2.begin(),v2.end());   5 z# t# R! b8 L' V% \! p4 s
        set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集 % t$ G$ y) t7 \5 x% D8 d' ]8 R
        return v;) k9 r& {$ c, j, y8 h4 e
}1 V3 k7 i0 o2 F; Q( j
3 p* W' W1 K5 \, T6 D
//两个vector求并集
( }# [- [6 h& c+ v. b6 g% ]' J, nvector<int> vectors_set_union(vector<int> v1,vector<int> v2){, d6 s+ Q* f, N
        vector<int> v;
6 ~+ @2 ?3 L  g9 y" z2 k        sort(v1.begin(),v1.end());   1 _7 ^+ `' \6 z( n1 i, R, R# X
        sort(v2.begin(),v2.end());   
, m7 H9 O0 Q) p% J! @4 k        set_union(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集 0 u0 O% q) i* o' q, L+ s
        return v;
8 d/ {: @) y4 C}4 \% {7 r9 K! x3 q4 H! n  l; ]

, T: m  G( s. X4 |! k//判断vector的某一元素是否存在/ G8 q, A8 f, J. a- J
bool is_element_in_vector(vector<int> v,int element){3 E7 T/ @9 y! b; j/ H
        vector<int>::iterator it;! a+ m2 v6 D, E$ p; d7 K
        it=find(v.begin(),v.end(),element);
1 C5 m6 U9 ?; v        if (it!=v.end()){! l3 ^4 q2 S4 G+ E/ I
                return true;
, w+ ~" V4 {* C' S+ r! U        }: h' B  _& y' q7 k6 q! Z* t
        else{
+ H. u7 w( B: Z: t& F5 [                return false;
$ N5 p# l* X; o0 @        }. T& k! K9 E5 Y, I& G4 B9 o
}2 u% T( x6 u. X" @5 a3 |) V

) n; B6 V' @' {, }( Y, \6 Hint main(){
% L! p0 U9 H5 T1 k        vector<int> v1,v2,v;
7 z* l1 |, v2 W        v1.push_back(22);v1.push_back(22);v1.push_back(23);v2.push_back(23);v2.push_back(24);
' h: a3 ~& I) e4 W        cout<<"v1是否存在1这个元素?"<<is_element_in_vector(v1,1)<<endl;
4 K: n. V: v: g! F% Q0 M# ]        cout<<"对v1去重:";
( E, W  \3 W% J0 s0 e  A* n        v1=unique_element_in_vector(v1);
" o" G' B; O  S/ H        print_vector(v1);* f; F2 `# p, m3 K8 L8 _
        cout<<endl;
  e, y9 D  b: w6 s# K: Y) `9 b        cout<<"求v1与v2的交集:";
# Y% C1 F1 A+ u" J& X4 V. `! k& S        v=vectors_intersection(v1,v2);/ P5 Z5 n) {  B& u6 q& a$ k
        print_vector(v);" u1 [) p$ r7 F6 Z
        cout<<endl;
: r! I3 C4 K/ A' M; b" O        cout<<"求v1与v2的并集:";
' [; G4 D; P  W. [" |2 m, t; r        v=vectors_set_union(v1,v2);
6 Y  s% @% P9 `        print_vector(v);* N" @6 v& T& y' r8 m+ Q) ~1 c
        return 0;3 y) g  e9 V6 J# Y0 S3 R9 P2 h! |
}[/mw_shl_code]
0 o: W6 N* t+ ~. M/ U: B
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了