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

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

admin 楼主

2018-7-2 19:41:23

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

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

x

$ j3 o2 A  `) q' M( O$ T6 B* i; m! ]& d3 E* v3 B4 R: U
C++虽然对vector封装了大量的函数,比如判断元素是否在vector中find、去重的unique,还有在algorithm类中对两个vector求交集、并集的函数,但是,这些函数是不可以直接vector.XX来使用的,如同在《【C++】容器类》中提到过如何删除vector的其中元素一样,需要搭上迭代器iterator对其进行遍历才能完成这个动作。这是不同于java与c#的,习惯就好。具体如下代码所示:
7 V7 S1 U' D1 I2 p4 Y2 D) N3 C. v[mw_shl_code=cpp,true]#include "iostream"
  A- c1 ^5 I" _, ], R#include "vector"
. m" X: `! [- G9 d#include "algorithm" //sort函数、交并补函数
3 Y: g7 U: ^" |#include "iterator" //求交并补使用到的迭代器
* Y* k$ o! r. ~' b+ w( J: A& y4 |using namespace std;
  K; f* P) y* O' `# X- Z
5 i: p2 R9 h. G+ f2 Q. v//打印容器vector
% v9 L/ p! b% U' t. h  bvoid print_vector(vector<int> v){9 b5 i7 j7 _$ [0 D3 _
        if(v.size()>0){
$ l$ R: u* u, }3 `. k# R# {! x                cout<<"{";  
% V- @( Z. C. l                for(int i=0;i<int(v.size());i++){  
7 |* O( O* D1 m* f# {* A5 q                        cout<<v<<",";  
5 \# R7 O  M# c) c6 N7 Z                }  
; J+ x% F+ l# M: G  H9 ]* x                cout<<"\b}";  / I6 q9 U9 S4 s0 D
        }. S- W- Y5 {2 v* p
        else{
6 Y- ]( j# @" F7 G3 l" v. o! O                cout<<"{}";
* q0 S) V2 k9 w9 i, f: B4 K) F        }9 B+ _$ T- i6 c7 q! x8 L
}  [" f# S" Z+ z" _" m" c+ I+ P

9 ?, Z0 o7 ?2 I5 T* ]6 C7 A3 r//容器vector中元素的去重
& @" v7 @+ |/ w; x& q/ q1 P; t2 N. Evector<int> unique_element_in_vector(vector<int> v){; {3 R* Z6 e. z3 p8 e0 s
        vector<int>::iterator vector_iterator;
& c$ h7 {7 }" c        sort(v.begin(),v.end());6 a# N& E) g* Z1 T+ S. B
        vector_iterator = unique(v.begin(),v.end());
- d1 y/ y) i$ k        if(vector_iterator != v.end()){
, W; q% V5 k$ G; x                v.erase(vector_iterator,v.end());
7 n- m5 W. y2 U6 D) |' M) K        }
; O2 O  T7 s: Q: S7 v* g        return v;) M* n( l3 _" A3 K% w
}/ M7 r; u' C2 r8 b. V
; a) ^- |% _$ Z  j" L! K
//两个vector求交集
: n( w! p, j+ V8 ?" V" k  pvector<int> vectors_intersection(vector<int> v1,vector<int> v2){
& [% H9 t* A2 ]3 Q* F        vector<int> v;
! r+ D& \$ J# l/ W# B+ t        sort(v1.begin(),v1.end());   . z% [: q" H6 E
        sort(v2.begin(),v2.end());     I6 c9 ~" u; ~, c3 x9 Z
        set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集 / `* _1 W: q- i$ {1 o9 `
        return v;$ }  ?% `2 O; a) t  a+ ~8 |
}: `% n5 O' e' {$ Y% u- \

1 _& s! D3 V6 ^8 k9 @//两个vector求并集( V* E7 U, r* g8 I2 V3 M. j
vector<int> vectors_set_union(vector<int> v1,vector<int> v2){
) Y. k- g+ \; \        vector<int> v;
+ [' O. x4 P% d5 D* W( q+ [- M! S        sort(v1.begin(),v1.end());   
9 W2 a3 H2 d: x, M% E3 S3 F. B; d        sort(v2.begin(),v2.end());   & [) n! p! g, z- Y3 W' p& i
        set_union(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集
1 ^) D$ ^2 n. A" X3 w1 e: i        return v;1 o. _3 q' F1 _0 ]3 {
}  T# @5 J$ {  S! h5 ]* ~5 h
, ?% A: C% H" I9 v" q: x
//判断vector的某一元素是否存在$ S# P+ N+ ]9 E2 G
bool is_element_in_vector(vector<int> v,int element){1 C0 O! n$ \) A! e, C1 b5 j7 _
        vector<int>::iterator it;0 l" g  |: {) N; Q) J: w5 w
        it=find(v.begin(),v.end(),element);
9 _4 t" W" y/ J, ?) `        if (it!=v.end()){
4 A$ |! S  y" i$ |/ Q6 w  O% \  X) z                return true;- {4 G5 o) S  ]" n/ d
        }$ q. N/ w1 ], y) f9 t% P
        else{0 e. R* d) j( @% v, q: ^
                return false;
' ?. ?/ n- Z" m2 Y9 o/ r8 \/ N        }( W8 D. k% t4 H4 l- `4 A
}
, z  f# @; Q5 ^; p  e* _  z , M: m& N) _& m  K! B
int main(){; m7 @' F7 {% y5 Z$ l! n% B
        vector<int> v1,v2,v;
7 x2 o, [& x$ j0 V- Y# s4 r% q        v1.push_back(22);v1.push_back(22);v1.push_back(23);v2.push_back(23);v2.push_back(24);
5 P# w- {5 L" `5 d5 Y: E3 S        cout<<"v1是否存在1这个元素?"<<is_element_in_vector(v1,1)<<endl;
- S9 N  T, Y" k  z  |; E        cout<<"对v1去重:";
% v: i" e6 W% k/ E2 l5 D) e        v1=unique_element_in_vector(v1);
% H$ x$ b5 p& E7 H2 \  t' U        print_vector(v1);; f% K# W! [* ~; Q/ U4 n
        cout<<endl;
7 ~, }  i0 x6 v$ z& h        cout<<"求v1与v2的交集:";$ ]4 |* v$ L( l" t
        v=vectors_intersection(v1,v2);
" p2 c8 M6 t) t, O, F: F        print_vector(v);
' f& O1 L$ a: m2 x  H        cout<<endl;6 x# ]* E; e3 e* n+ Z  n! B/ B, N1 W
        cout<<"求v1与v2的并集:";* O$ K, W5 W: P/ q( ^
        v=vectors_set_union(v1,v2);8 G9 u: ]% ^9 R/ i9 _; I) j9 h: h
        print_vector(v);
" ^6 u9 Y  z6 J( r$ u) e; \        return 0;: g( M0 F" C3 o3 O1 A
}[/mw_shl_code]+ l( Z- W! N& P5 @4 m" ]
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了