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

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

mildcat 楼主

2016-8-29 20:25:18

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

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

x
最全的c++map的用法

此文是复制来的0.0

1. map最基本的构造函数;
( V- U" u) _* ~  N8 Dmap<string ,int>mapstring; map<int,string >mapint;  r- i) x5 Z/ v* G- Q+ B; X  Y' I7 ?
map<sring,char>mapstring; map< char ,string>mapchar;
' T4 x& K9 u2 L$ tmap<char,int>mapchar; map<int ,char>mapint;

2. map添加数据;

map<int ,string>maplive;
4 m4 Y8 }$ L3 V# R% P$ [1. maplive.insert(pair<int,string>(102,"aclive"));1 H8 O+ R* N% e4 C' \$ k7 G
2. maplive.insert(map<int,string>::value_type(321,"hai"));
* e+ Y* D) B5 p; N  V3. maplive[112]="April";//map中最简单最常用的插入添加!
# I0 N' g& F8 R4 ?0 _

3. map中元素的查找:

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

map<int ,string >::iteratorl_it;; 3 P5 c& a8 G( i! V
l_it=maplive.find(112);//返回的是一个指针0 i8 O- f3 Y. i
if(l_it==maplive.end())# ]' T  g3 y$ i+ B9 G6 X7 X7 Y
cout<<"we do not find112"<<endl;% L( |. R' u! g: }  P0 v
elsecout<<"wo find112"<<endl;
" `2 y4 F% p' X8 y8 D2 Z, R9 t" r

) J' b6 ?& \9 [

map<string,string>m;

if(m[112]=="")

cout<<"we do not find112"<<endl;1 v( L; V: S& z" {( C

4. map中元素的删除:! v' m& Y3 O5 w# T5 b4 {  F) Y
如果删除112;# E: w. |) S2 ]0 i% Y* C' `* F
map<int ,string>::iterator l_it;;
! O: d% \3 u/ _6 f, v$ ^l_it =maplive.find(112);
+ L' T, S9 _2 q) r" E5 }3 O! _if( l_it == maplive.end()); c4 l7 ^* e# R. j
cout<<"we do not find112"<<endl;6 L8 L5 c& R, u* L* l* D. ]- a
else maplive.erase(l_it);//delete 112;
5 ]/ l$ J9 X% m$ ?7 u3 x  K

5. map中 swap的用法:
5 S8 }& \$ f2 @# |( n$ NMap中的swap不是一个容器中的元素交换,而是两个容器交换;4 p- _( m8 T/ [( k% F
For example:
- Q: V; ?4 T' I- J6 c#include<map>
* ?# J, [0 n% T& N  G) G2 X) q' B#include<iostream>

usingnamespace std;

int main(), @& u4 r) k- G9 l2 ~
{
/ d2 H1 V* i! P; jmap <int, int> m1, m2, m3;: F- [3 ?) P! B$ z3 G
map <int,int>::iterator m1_Iter;

m1.insert( pair <int, int>(1, 10 ) );
% |; A& w1 E. G) ~" Vm1.insert ( pair <int,int> ( 2, 20 ) );5 P; p+ {; Y8 N4 \( |! h
m1.insert ( pair <int,int> ( 3, 30 ) );
, t( E  j# }0 `; |; r* c: `9 ?m2.insert ( pair <int,int> ( 10, 100 ) );
* N0 s* L6 u; ~% y, Wm2.insert ( pair <int,int> ( 20, 200 ) );# a' L9 g. P" i
m3.insert ( pair <int,int> ( 30, 300 ) );

cout << "The original map m1is:";- ?; H+ i) A6 o4 o
for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )/ y8 u; N8 {' r, \
cout << " "<<m1_Iter->second;
* Z6 m$ Q  L2 k  W$ m7 X2 J! wcout << "."<< endl;

// This isthe member function version of swap2 g: @* A) Y$ J5 i  e$ g
// m2 is said to be theargument map; m1 the target map
9 l4 t& L9 {' j/ p8 dm1.swap( m2);

cout << "Afterswapping with m2, map m1 is:";
$ F7 a' o9 X. A  l1 Z: q  Pfor ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )4 V4 N' ]' w+ Z- d" C
cout << " "<< m1_Iter ->second;5 F+ ^/ F% B" A3 ?8 h
cout << "."<< endl;


- b; B# s/ w9 |* M& Tcout << "After swapping with m2, mapm2 is:";. x* W) P6 i: h8 K, c+ `
for ( m1_Iter = m2.begin( ); m1_Iter != m2.end(); m1_Iter++ )* F  E8 @% V/ w( Q0 X
cout << " "<< m1_Iter ->second;
7 p8 A2 ]# V/ O7 K* M% Ncout << "."<< endl;


. k* `: l4 Z" K) {// This is the specialized template version of swap
" Q, M, h3 x  ]& D0 y  uswap( m1, m3 );

cout << "Afterswapping with m3, map m1 is:";
0 u/ N6 g' O: h& Rfor ( m1_Iter = m1.begin( ); m1_Iter != m1.end(); m1_Iter++ )
- S; g# u) H! S) {cout << " "<< m1_Iter ->second;4 r  v2 y; R5 l9 J: \  S
cout << "."<< endl;
# q+ n- b; ?( a* T$ y}

6. map的sort问题:
" }2 m7 U3 u# O: O) SMap中的元素是自动按key升序排序,所以不能对map用sort函数:: @$ x/ K% X* H. K- @! }* ?
For example:7 S+ ^9 x& b3 c, Y2 A) h. j4 ?
#include<map>
7 _: i1 `: s( [3 x#include<iostream>

usingnamespace std;

int main( ): o4 O2 X. t+ X' }
{$ K/ C# Q/ u$ l  d3 p" x
map<int, int> m1;* D1 b. Q* ^) t( p& }2 l
map <int,int>::iterator m1_Iter;

m1.insert (pair <int, int> (1, 20 ) );3 X7 x# l* {6 W& D
m1.insert ( pair<int, int> ( 4, 40) );* }! T: L6 m4 l* M
m1.insert ( pair<int, int> ( 3, 60) );
$ E. d2 p" T6 X5 ?! T+ I  l, n7 Tm1.insert ( pair<int, int> ( 2, 50) );
5 O  _9 O9 Z) U5 {m1.insert ( pair<int, int> ( 6, 40) );
9 M; k% t/ @( A7 P3 i; {5 N( s4 xm1.insert ( pair<int, int> ( 7, 30) );

cout<< "The original map m1is:"<<endl;
8 T! ~+ ^# t/ p+ _: u. t# Ofor ( m1_Iter = m1.begin( );m1_Iter != m1.end( ); m1_Iter++ )2 R- a+ Y5 H" a. p
cout << m1_Iter->first<<""<<m1_Iter->second<<endl;# f7 l& c9 X- ?7 a( `
4 ?5 T& l$ s/ g: ]
}) `/ I6 e  T3 _; M

The original map m1 is:
( \  D" U5 k0 a0 y) D  b$ \3 i. x1 20
9 K7 w" O5 B3 J$ _3 G( g& K# x* C. L2 50
1 O. Y% t" n- B% V; F. w. F, w3 60- j/ L* N3 |! _/ ^
4 40
, ?- R2 {4 ]4 o6 40
7 `  H! l9 d7 l3 _2 h; t. ^- G$ j7 S7 30

7. map的基本操作函数:
& [$ u5 T; ~; v1 ]C++Maps 是一种关联式容器,包含“关键字/值”对
  a( Y6 i$ n& B& p1 {begin() 返回指向map头部的迭代器3 v' I5 n! L) z* b
clear() 删除所有元素! k! w2 C0 Y, ]
count() 返回指定元素出现的次数
& K0 p* g, `* V7 h7 Uempty() 如果map为空则返回true
; r& F1 `* v9 m1 W# |end() 返回指向map末尾的迭代器( g, y6 l, V0 f, ]: v9 y
equal_range() 返回特殊条目的迭代器对
. [- c; A8 Q8 n# [  j3 Q! Cerase() 删除一个元素
4 u: o  W/ x) d* Nfind() 查找一个元素
. o8 |( C) s6 e4 kget_allocator() 返回map的配置器. ~4 S1 g" G4 W* U$ c
insert() 插入元素
# ^6 D, L' M4 s& {1 ckey_comp() 返回比较元素key的函数, R# A6 K8 S# G2 E8 `9 [; P
lower_bound() 返回键值>=给定元素的第一个位置/ Z$ W$ p' G0 J! d3 V8 \" I! X
max_size() 返回可以容纳的最大元素个数/ X' e! b# P; J/ D7 @$ P+ E
rbegin() 返回一个指向map尾部的逆向迭代器6 R1 G' t- I# L2 `9 M1 p+ Q
rend() 返回一个指向map头部的逆向迭代器( N6 q! q0 G0 P- G, \7 ^& H, P" e3 Z
size() 返回map中元素的个数# P. y1 s% o- R0 ~8 q
swap() 交换两个map- c) p% r& d' D
upper_bound() 返回键值>给定元素的第一个位置9 M% }3 C; p- J) m& Q
value_comp() 返回比较元素value的函数

* m( W5 f9 H. p7 ~. X0 s
该会员没有填写今日想说内容.
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了