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

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

admin 楼主

2018-7-2 19:41:23

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

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

x

, V. p* ?8 p3 W0 ?( h) p5 Q" w
7 x% `+ m0 j; ?- G% t: iC++虽然对vector封装了大量的函数,比如判断元素是否在vector中find、去重的unique,还有在algorithm类中对两个vector求交集、并集的函数,但是,这些函数是不可以直接vector.XX来使用的,如同在《【C++】容器类》中提到过如何删除vector的其中元素一样,需要搭上迭代器iterator对其进行遍历才能完成这个动作。这是不同于java与c#的,习惯就好。具体如下代码所示:
% g3 p  X) f; E4 C9 I5 I[mw_shl_code=cpp,true]#include "iostream"
5 v" O; G7 L% n1 a* a9 X3 q- j) D2 G#include "vector" # E; t; [2 M4 E; H2 ?
#include "algorithm" //sort函数、交并补函数  n7 b+ V* f6 u1 n- W0 S3 ^
#include "iterator" //求交并补使用到的迭代器1 s4 ~" b! m3 T  Q- G: r( p9 H
using namespace std;1 d! T9 M' b0 b/ E6 t" m0 c& p' U
1 X) t, x! Z8 f4 ~# X
//打印容器vector
; }6 c/ I0 i- ~1 Fvoid print_vector(vector<int> v){
% x. w2 x& S5 n        if(v.size()>0){& z. _, A7 X( |, c6 a) R. D
                cout<<"{";  
& f! ~# R" {- f( @( J0 f/ Z$ q+ {                for(int i=0;i<int(v.size());i++){  1 Q$ r1 P7 Q1 x, k
                        cout<<v<<",";  
, P$ O4 u! N3 f; w- w7 z                }  . H; o; v8 T& x9 l& I7 J( L& c
                cout<<"\b}";  * S$ i" w5 o; Q' L+ A0 c+ Q
        }4 u! C. \/ `) ]
        else{
8 U5 h+ J+ z1 _0 I                cout<<"{}";
2 _. j! k, M2 H/ ]: u/ v        }1 D6 x- U! A0 S1 l0 p; N& }0 Q* T2 G
}
/ N* o# E. a2 O2 f: ~
7 v6 z  R# j9 x" H8 ?//容器vector中元素的去重# y( [& g, O5 n
vector<int> unique_element_in_vector(vector<int> v){7 {9 e  Y9 w0 Y8 Z- [
        vector<int>::iterator vector_iterator;
2 O5 i& D" s" l8 I; x# ]3 Q& L6 j        sort(v.begin(),v.end());
) w1 Q; L- x' {, ?6 u        vector_iterator = unique(v.begin(),v.end());
, J/ M8 w: d/ `: n* Q' _+ w        if(vector_iterator != v.end()){/ |; p1 e- j$ n6 g0 M
                v.erase(vector_iterator,v.end());8 J- P. T1 B  g1 l
        }. X6 w3 Q/ V3 m  S2 h% V$ ^
        return v;
$ r, L: Z  e4 ]) ^4 X+ F}: v) {5 o% y6 A5 E
) m# p5 w8 s( ]7 Q4 t* S
//两个vector求交集
' m: d) [' Y4 }2 v; l# ?$ Q  t( I: Evector<int> vectors_intersection(vector<int> v1,vector<int> v2){4 K3 p! L$ \6 M- m! T" F  i# y$ j
        vector<int> v;* j  h; J4 |, r- N" v: {0 l
        sort(v1.begin(),v1.end());     o( a9 @8 E+ J. c* y+ d2 M) ]' \6 ?
        sort(v2.begin(),v2.end());   ; @5 H9 v; w2 j: b2 l
        set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集
3 n/ k" o) K$ n+ b, j        return v;
: g; s" d4 v" ^6 l1 s5 t}1 B* j' |+ D9 O. J3 R

- ^# e) e. `# {8 w5 {3 ?  S//两个vector求并集
, v/ y1 [# |- w. d1 ]1 bvector<int> vectors_set_union(vector<int> v1,vector<int> v2){) X3 C# d6 V: j) u5 |! R
        vector<int> v;
! X$ G6 n8 i6 D        sort(v1.begin(),v1.end());   4 r  j0 O7 X4 U
        sort(v2.begin(),v2.end());   1 {) ?* V2 i4 m* ^1 P
        set_union(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集
. p! H8 c. B; F- A        return v;
! [, E1 F7 C, E}- y  P+ M$ V9 h$ t$ t: F4 f

6 {6 t* G3 ~% S# Q//判断vector的某一元素是否存在
" v4 a' }# L: L, Abool is_element_in_vector(vector<int> v,int element){
, [1 O" M0 y9 T6 _6 u5 C9 |; U5 G4 @        vector<int>::iterator it;8 F  }! D' o2 E; `5 ]6 d
        it=find(v.begin(),v.end(),element);
: x3 g8 U- Y( j( M/ N        if (it!=v.end()){; Y* y7 M$ \1 e; f; Z2 v
                return true;1 i. T5 n: k" K3 a
        }
2 K" K# v) `0 ~        else{
; `# ?, G* t  b+ I: G, ~                return false;4 U1 y3 x$ P& r6 W$ _# D0 L
        }" f- n: Y  r* N+ B) O+ c
}+ q% a% R% F; X( g
8 [8 C- h) n! b$ O2 E/ a
int main(){
3 _% J$ c5 z4 B        vector<int> v1,v2,v;
  u" v" O* L& y& K1 a7 y( b        v1.push_back(22);v1.push_back(22);v1.push_back(23);v2.push_back(23);v2.push_back(24);
2 B4 ]. d' s' M) V# v5 D        cout<<"v1是否存在1这个元素?"<<is_element_in_vector(v1,1)<<endl;5 ]& i' r- O& t) S2 y$ t& M
        cout<<"对v1去重:";
! O2 H  X8 I& _1 _& `+ G        v1=unique_element_in_vector(v1);
- j, @1 C5 j0 J, q: y6 c$ {( y, q        print_vector(v1);
3 ]# }1 ^2 c/ k6 y        cout<<endl;
2 i* g! Z5 ^) l7 q        cout<<"求v1与v2的交集:";6 O& j2 E9 V* _0 f8 U% X
        v=vectors_intersection(v1,v2);
! M) o% K) y! ^3 g! f! g6 i$ L        print_vector(v);
5 A- j4 n( i. N        cout<<endl;( d4 H" W: f$ \& O2 ?: b
        cout<<"求v1与v2的并集:";9 m0 C' I6 q/ k5 Z( \
        v=vectors_set_union(v1,v2);
- }2 o4 z: M* w  L9 Z3 L+ q4 m$ d5 b        print_vector(v);: S6 A4 l6 l! C" s2 l7 g: P& P
        return 0;
$ T- |  b, I$ Y% H0 i, v8 ~}[/mw_shl_code]
0 C7 f9 G# [( d1 m- K6 r/ g
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了