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-国产软件践行者

[转载电子书] 最全的c++map的用法

[复制链接]

2016-8-29 20:25:18 3319 0

mildcat 发表于 2016-8-29 20:25:18 |阅读模式

mildcat 楼主

2016-8-29 20:25:18

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

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

x
最全的c++map的用法

此文是复制来的0.0

1. map最基本的构造函数;! ?. D9 Y6 l" d( c6 \
map<string ,int>mapstring; map<int,string >mapint;
8 _4 k: e$ C3 ~0 C- K- Y  U8 Qmap<sring,char>mapstring; map< char ,string>mapchar;0 K) _9 _" ~& H% _
map<char,int>mapchar; map<int ,char>mapint;

2. map添加数据;

map<int ,string>maplive;
1 [) l0 C" k6 [% u1. maplive.insert(pair<int,string>(102,"aclive"));
" a; Y4 o9 A3 d% L0 u2. maplive.insert(map<int,string>::value_type(321,"hai"));
/ C/ l* ]. P! n3. maplive[112]="April";//map中最简单最常用的插入添加!
0 b0 o5 j$ f  C0 Q

3. map中元素的查找:

find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。

map<int ,string >::iteratorl_it;; 2 p3 Q$ {% @1 T0 v8 _1 D0 G
l_it=maplive.find(112);//返回的是一个指针
# z! ?0 g, p5 {6 v8 ]& jif(l_it==maplive.end())" p& V- {: A* L9 u7 f( |. T( C
cout<<"we do not find112"<<endl;8 n; i2 _! M& }
elsecout<<"wo find112"<<endl;7 K! i( B/ Q( j0 G% S) w( v

7 k, K3 R: d+ l: N0 g) s) z( \

map<string,string>m;

if(m[112]=="")

cout<<"we do not find112"<<endl;  ]$ T: y* {- T/ z* i" O/ ]5 i

4. map中元素的删除:
# c7 e2 T! S- A: z如果删除112;
; H  T5 I# l, f8 V: c; m. pmap<int ,string>::iterator l_it;;
# R7 G% P4 j( f3 Q3 ol_it =maplive.find(112);
& g/ q5 \6 z8 dif( l_it == maplive.end())% X/ \' A6 x1 C& X1 C
cout<<"we do not find112"<<endl;
4 L+ x. k9 z: t# c+ ^, e2 Felse maplive.erase(l_it);//delete 112;
4 X, w5 k: y8 B/ ?, c" b& @( j

5. map中 swap的用法:% f, _& X% M* h: U" A: H5 _
Map中的swap不是一个容器中的元素交换,而是两个容器交换;: b) B  Z/ E) F' E
For example:" r& z' x: P9 K( b  g. e
#include<map>$ y, C/ i5 A$ r$ l, ?% _
#include<iostream>

usingnamespace std;

int main()
2 k% ^- X' L# G; h* N{
) K& z7 j- Y  i& tmap <int, int> m1, m2, m3;
( f  C' h0 u6 i3 Q: Zmap <int,int>::iterator m1_Iter;

m1.insert( pair <int, int>(1, 10 ) );
0 D* i# {% t# X9 q! dm1.insert ( pair <int,int> ( 2, 20 ) );& E0 \% {7 b0 q6 F; L' y
m1.insert ( pair <int,int> ( 3, 30 ) );
7 N  X. F" j0 Wm2.insert ( pair <int,int> ( 10, 100 ) );
( z7 P0 x" L, X2 S5 T9 t- }m2.insert ( pair <int,int> ( 20, 200 ) );
1 i% @: M) @- {  E$ zm3.insert ( pair <int,int> ( 30, 300 ) );

cout << "The original map m1is:";
. Q% T5 o. |7 K: C# @1 {  bfor ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )
6 @6 }" A$ Y, Q1 I' C& mcout << " "<<m1_Iter->second;
1 T+ r# ~+ h* U* ]$ k1 hcout << "."<< endl;

// This isthe member function version of swap
$ g# D4 v0 @+ I// m2 is said to be theargument map; m1 the target map
! \# z8 R" v! A% Em1.swap( m2);

cout << "Afterswapping with m2, map m1 is:";
& r5 ?2 G7 J' x7 Rfor ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )5 \, A7 Q3 D* [: }
cout << " "<< m1_Iter ->second;  ?. c- w2 Q, y3 W: }+ o7 Y. E) q
cout << "."<< endl;


- H4 P& b2 T& u; a7 Tcout << "After swapping with m2, mapm2 is:";
: C, {* f7 g' Lfor ( m1_Iter = m2.begin( ); m1_Iter != m2.end(); m1_Iter++ )) s1 _  Z8 Z; w  O; o; L! m
cout << " "<< m1_Iter ->second;% l" d* F) |% X5 u8 U/ r, `
cout << "."<< endl;

3 B1 r' ^% T5 ^8 j3 p( X
// This is the specialized template version of swap
, {% X, d! G; kswap( m1, m3 );

cout << "Afterswapping with m3, map m1 is:";
8 n9 v+ S5 R5 \& [' x9 j# L3 Gfor ( m1_Iter = m1.begin( ); m1_Iter != m1.end(); m1_Iter++ )
  r& {$ p$ {8 T* t9 Y: mcout << " "<< m1_Iter ->second;
! h8 k' [$ R+ J& J5 Qcout << "."<< endl;
# K- D8 v$ c! e: y) n$ m5 Y& E}

6. map的sort问题:- U) b( V1 ?0 h
Map中的元素是自动按key升序排序,所以不能对map用sort函数:1 x6 m1 s, [8 @+ j. P1 ^
For example:7 H. r, @$ a% q
#include<map>  ]3 l/ Z2 `( ]# \" s' {7 d
#include<iostream>

usingnamespace std;

int main( )4 w1 H. C7 z4 C( y) C4 o  n1 ^) {- o
{
9 [5 [/ t1 r  n- Z  e# bmap<int, int> m1;
7 j* U8 |  |/ t( Lmap <int,int>::iterator m1_Iter;

m1.insert (pair <int, int> (1, 20 ) );
  q+ w1 j) [0 gm1.insert ( pair<int, int> ( 4, 40) );, E  z) @0 x& R% n7 q' J. I" X7 ~
m1.insert ( pair<int, int> ( 3, 60) );
# j2 I( y+ Z6 b9 U; vm1.insert ( pair<int, int> ( 2, 50) );( a+ O2 ]* B8 p6 ^- N% n7 E
m1.insert ( pair<int, int> ( 6, 40) );
8 ~  x  i, [  ?& }) |: C: b3 I3 Zm1.insert ( pair<int, int> ( 7, 30) );

cout<< "The original map m1is:"<<endl;
' T  H5 |0 m. W/ I& @$ I, }# rfor ( m1_Iter = m1.begin( );m1_Iter != m1.end( ); m1_Iter++ )) B' k) u" y& I! I* H' S2 L
cout << m1_Iter->first<<""<<m1_Iter->second<<endl;
8 g3 J, H  ?' \9 L. d3 o/ n6 b
2 L5 l/ U& f: m" M+ z$ h! j- _}8 x0 Q0 C7 D' Q$ S% ~. U

The original map m1 is:
9 G4 x2 |' u% N; X9 j1 20
" V* N$ e5 m, H( z9 l$ c5 ~2 504 L  X& M1 j5 x7 ~' i& x! Z
3 60# }. ?. t0 R( r- P9 Z& k5 d
4 400 |; T* j/ Y% Z4 p+ u, @
6 404 c! Y/ B/ B) e/ p% a; U4 |* O4 O
7 30

7. map的基本操作函数:  r  Y$ t# N) y$ _6 Z' o9 Q
C++Maps 是一种关联式容器,包含“关键字/值”对
$ ^- k: b/ H: R# Hbegin() 返回指向map头部的迭代器
5 R- z: W' S0 \& hclear() 删除所有元素9 X" t0 f: e6 p- J  B) [- m
count() 返回指定元素出现的次数
) Z# \4 X4 o% J, S7 ^# T3 _- rempty() 如果map为空则返回true9 Q. |: L  o9 P
end() 返回指向map末尾的迭代器  \% H) C" H# T$ \* p% C5 _6 \
equal_range() 返回特殊条目的迭代器对& G9 o# }/ {- I: o  l$ @; _
erase() 删除一个元素) T9 Q5 d4 g2 D* x: B# g4 |
find() 查找一个元素
! t7 e" E9 A5 R. fget_allocator() 返回map的配置器
# G9 u; c1 o: U5 R5 D  _insert() 插入元素, e; p" e% |1 q+ |) n6 ]
key_comp() 返回比较元素key的函数' D" l' W4 b: Z. o
lower_bound() 返回键值>=给定元素的第一个位置
4 f3 f4 K4 ~- h& C, }7 q, Mmax_size() 返回可以容纳的最大元素个数
5 \. p' ^8 u8 b1 h. Q0 S4 Y- }rbegin() 返回一个指向map尾部的逆向迭代器- G8 h+ i& F7 ^3 i
rend() 返回一个指向map头部的逆向迭代器  \2 [9 f& y+ U# f+ j3 P2 G- H
size() 返回map中元素的个数" J- r7 w( o$ G9 a3 z
swap() 交换两个map: t8 B* Z/ X: I
upper_bound() 返回键值>给定元素的第一个位置
) }- X) j! O' l! M% ?) _value_comp() 返回比较元素value的函数


( A1 _3 I5 B6 I6 r+ N9 J
该会员没有填写今日想说内容.
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了