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

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

admin 楼主

2018-7-2 19:41:23

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

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

x
2 {/ U' ?% ?4 K7 y

/ F" c$ u/ V0 w* U% B3 [0 UC++虽然对vector封装了大量的函数,比如判断元素是否在vector中find、去重的unique,还有在algorithm类中对两个vector求交集、并集的函数,但是,这些函数是不可以直接vector.XX来使用的,如同在《【C++】容器类》中提到过如何删除vector的其中元素一样,需要搭上迭代器iterator对其进行遍历才能完成这个动作。这是不同于java与c#的,习惯就好。具体如下代码所示:
- j0 c# a4 k$ g4 {- o# H[mw_shl_code=cpp,true]#include "iostream"' f/ M+ K; S" l" Y# [6 d" J) v% N
#include "vector"
" Y, V. h2 Q0 u" w) o+ y#include "algorithm" //sort函数、交并补函数$ K, D" o$ Q  Z$ s+ x) N; @/ n
#include "iterator" //求交并补使用到的迭代器0 N1 e) Z0 g$ d" R; v4 a
using namespace std;+ U6 N0 c: \% q+ v& u6 b( y  l+ a

8 u4 b6 ^6 ]* R: A; W//打印容器vector
; Z8 z3 d; ^9 n: |void print_vector(vector<int> v){
; V( R9 i+ w2 _  G* _0 o# ^        if(v.size()>0){
( ^7 I# Q4 _6 o& p                cout<<"{";  ( k! [, R5 R8 ]% E, P8 @4 z) M
                for(int i=0;i<int(v.size());i++){  % r2 V& o2 K$ C
                        cout<<v<<",";  
1 T, {" E3 g  r& T! b: ]/ N                }  " {) `: M) X$ s$ l
                cout<<"\b}";  2 t5 f  r+ I$ ~8 F7 Z3 u/ \
        }
; p3 a; E7 a/ v: z' Y        else{+ G0 n2 E9 T* o
                cout<<"{}";' ]* t* N( G- s  v, c; S* f
        }, k% T+ g7 D" }! L$ T5 Q
}* o* x! }; n0 r' W9 |+ c

6 ~) e. ~' p  c& i) s2 }//容器vector中元素的去重
* _3 N2 i9 ], T- \$ D6 \vector<int> unique_element_in_vector(vector<int> v){- z' M, _/ q6 J- ]# C0 N# j
        vector<int>::iterator vector_iterator;
7 Z: R& }1 J" O$ `/ n  v; v        sort(v.begin(),v.end());
& [, U) W4 D9 x2 \$ t0 {        vector_iterator = unique(v.begin(),v.end());
/ |- j# J- J' G3 q        if(vector_iterator != v.end()){
' n3 m4 S( [% R5 ?3 T, E" x                v.erase(vector_iterator,v.end());
0 n: s8 m, c2 B6 O0 b+ D3 z3 S        }
2 U; L. M& X- Y' z4 z& R, }) |        return v;- y8 g; U; a. {
}8 b+ s. T* x/ p% U; H8 N. b

) Z) w- T4 Y6 j/ S) g' W. \$ `2 N//两个vector求交集
2 C+ T' Y1 t0 H# ?: @5 Rvector<int> vectors_intersection(vector<int> v1,vector<int> v2){, D$ p7 S7 m2 c& ^5 d) M. [4 c- a
        vector<int> v;
7 n3 |" |1 q/ M) W9 M        sort(v1.begin(),v1.end());   
" o9 p1 f/ ^" {& b  |        sort(v2.begin(),v2.end());   # G9 R$ a  D& n. u' k
        set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集 $ n: N% T0 q7 f* _, d
        return v;
+ U5 T3 a* Q0 N4 w}" u' I: R; p3 V3 l. c0 y$ U: v

5 H" a) u1 y% ]6 u) u//两个vector求并集
% r7 R* h7 {- P  Mvector<int> vectors_set_union(vector<int> v1,vector<int> v2){
0 N, {5 m2 H2 r" E1 w        vector<int> v;/ ]; L& i; k% s$ I
        sort(v1.begin(),v1.end());   . @* x5 J7 R7 I" h9 l1 q
        sort(v2.begin(),v2.end());   
8 H- l: h3 i5 J2 ]" D9 Y7 b8 I        set_union(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集
) ?6 d8 L' J) ]7 _        return v;6 r* v, \+ f, i# J
}9 Z2 U* |, v/ R$ ~# W- m5 ?* S/ x
6 Z5 e- K6 W  K
//判断vector的某一元素是否存在
* `% z: k7 g: s7 U: ?! g6 Sbool is_element_in_vector(vector<int> v,int element){4 f  m) F- m" _  W* L
        vector<int>::iterator it;* k5 s/ c6 S# P/ ?1 j
        it=find(v.begin(),v.end(),element);7 x$ O3 \3 k3 u' @( N2 P
        if (it!=v.end()){
! O2 `3 ^- R& t5 f" M$ [/ @                return true;
1 ^0 P: [0 r$ |        }# J8 W8 Z7 x6 J. @
        else{
/ O+ j9 g  m! v1 \. i7 V' q8 z9 k  M                return false;! w" s2 S! p7 r7 Y
        }
& s$ m$ X+ {/ x. C$ I3 a}1 j1 G. B- ~6 m0 l% T/ \
" A2 b/ W% a. a3 T, A
int main(){
4 F* f; A! l4 n  \        vector<int> v1,v2,v;5 d: G: K: C( C: W1 C* `0 M
        v1.push_back(22);v1.push_back(22);v1.push_back(23);v2.push_back(23);v2.push_back(24);
( X& r; V7 Z( A        cout<<"v1是否存在1这个元素?"<<is_element_in_vector(v1,1)<<endl;. [$ }! C/ C$ J
        cout<<"对v1去重:";
. C; p3 G0 E% h* p' I( e/ H        v1=unique_element_in_vector(v1);
" I9 N7 j. p$ |1 A9 x3 j) q        print_vector(v1);
8 [" {( e; ~1 a/ i        cout<<endl;3 d; M4 k# R: \9 o4 k
        cout<<"求v1与v2的交集:";5 s. o( Q* {) O* x4 K
        v=vectors_intersection(v1,v2);# t# O% T3 J9 l
        print_vector(v);4 y6 A) G# k0 h1 }3 b% Z
        cout<<endl;1 S5 y) ?, A, T/ H1 h2 ^
        cout<<"求v1与v2的并集:";/ Q/ c  D# x" l# f
        v=vectors_set_union(v1,v2);) s  U% \  N! p: P. G5 l' E
        print_vector(v);; i2 E4 e' V" w0 X
        return 0;1 K) H& l9 i! v* f5 U- w' ^/ [
}[/mw_shl_code]2 j9 T3 h3 k5 V+ W1 w* S0 g1 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二次开发专题模块培训报名开始啦

    我知道了