More Related Content More from 京倧 ãã€ã³ã³ã¯ã©ã
More from 京倧 ãã€ã³ã³ã¯ã©ã (20) C++111. C++11 is äœ?
C++11 ã§ã§ããããš
.
...... C++11
hatsusato
京éœå€§åŠçåŠéš 1 å
2012 幎 12 æ 20 æ¥
hatsusato C++11
2. C++11 is �
C++11 ã§ã§ããããš
.. èªå·±çŽ¹ä»
@hatsusato ã®ãããã£ãŒã«
hatsusato C++11
3. C++11 is �
C++11 ã§ã§ããããš
.. èªå·±çŽ¹ä»
@hatsusato ã®ãããã£ãŒã«
C++äžç
hatsusato C++11
4. C++11 is �
C++11 ã§ã§ããããš
.. èªå·±çŽ¹ä»
@hatsusato ã®ãããã£ãŒã«
C++äžç
çåŠéšæ°åŠç³»å¿æ
hatsusato C++11
5. C++11 is �
C++11 ã§ã§ããããš
.. èªå·±çŽ¹ä»
@hatsusato ã®ãããã£ãŒã«
C++äžç
çåŠéšæ°åŠç³»å¿æ
倧åŠé¢ã¯æ
å ±ã®æµãæ¿å
hatsusato C++11
6. C++11 is �
C++11 ã§ã§ããããš
.. èªå·±çŽ¹ä»
@hatsusato ã®ãããã£ãŒã«
C++äžç
çåŠéšæ°åŠç³»å¿æ
倧åŠé¢ã¯æ
å ±ã®æµãæ¿å
ãããã€ãã
hatsusato C++11
7. C++11 is �
C++11 ã§ã§ããããš
.. ç®æ¬¡
...1 C++11 is �
...2 C++11 ã§ã§ããããš
hatsusato C++11
9. C++11 is �
C++11 ã§ã§ããããš
.. C++11 is �
C++11 ãšã¯ã2011 幎ã«æšæºåããã C++ã®ææ°èŠæ Œã®
ããšã§ããã
hatsusato C++11
10. C++11 is �
C++11 ã§ã§ããããš
.. C++11 is �
C++11 ãšã¯ã2011 幎ã«æšæºåããã C++ã®ææ°èŠæ Œã®
ããšã§ããã
ãããŸã§ã® C++03 ãšã¯æ¯ã¹ç©ã«ãªããªãã»ã©ãŸãšãã«
ãªã£ããããã§äžäººåã®èšèªã«ã
hatsusato C++11
11. C++11 is �
C++11 ã§ã§ããããš
.. C++11 is �
C++11 ãšã¯ã2011 幎ã«æšæºåããã C++ã®ææ°èŠæ Œã®
ããšã§ããã
ãããŸã§ã® C++03 ãšã¯æ¯ã¹ç©ã«ãªããªãã»ã©ãŸãšãã«
ãªã£ããããã§äžäººåã®èšèªã«ã
ã³ã¢èšèªã®æ©èœãæ¡åŒµãããä»ãŸã§ã«åºæ¥ãªãã£ããã
é¢åãããé åããããŠå®çŸããŠããããããã®ããšã
ç°¡åã«ã§ããããã«ã
hatsusato C++11
12. C++11 is �
C++11 ã§ã§ããããš
.. C++11 is �
C++11 ãšã¯ã2011 幎ã«æšæºåããã C++ã®ææ°èŠæ Œã®
ããšã§ããã
ãããŸã§ã® C++03 ãšã¯æ¯ã¹ç©ã«ãªããªãã»ã©ãŸãšãã«
ãªã£ããããã§äžäººåã®èšèªã«ã
ã³ã¢èšèªã®æ©èœãæ¡åŒµãããä»ãŸã§ã«åºæ¥ãªãã£ããã
é¢åãããé åããããŠå®çŸããŠããããããã®ããšã
ç°¡åã«ã§ããããã«ã
æšæºã©ã€ãã©ãªã倧ããæ¡å
ãããããããã®äŸ¿å©ãªã©
ã€ãã©ãªãç°¡åã«å©çšã§ããããã«ã
hatsusato C++11
13. C++11 is �
C++11 ã§ã§ããããš
.. C++11 is �
C++11 ãšã¯ã2011 幎ã«æšæºåããã C++ã®ææ°èŠæ Œã®
ããšã§ããã
ãããŸã§ã® C++03 ãšã¯æ¯ã¹ç©ã«ãªããªãã»ã©ãŸãšãã«
ãªã£ããããã§äžäººåã®èšèªã«ã
ã³ã¢èšèªã®æ©èœãæ¡åŒµãããä»ãŸã§ã«åºæ¥ãªãã£ããã
é¢åãããé åããããŠå®çŸããŠããããããã®ããšã
ç°¡åã«ã§ããããã«ã
æšæºã©ã€ãã©ãªã倧ããæ¡å
ãããããããã®äŸ¿å©ãªã©
ã€ãã©ãªãç°¡åã«å©çšã§ããããã«ã
ããã§ããŠå®è¡æé床ã¯å€ãããªããããããéã
ãªã£ãã
hatsusato C++11
14. C++11 is �
C++11 ã§ã§ããããš
.. C++11 is �
C++11 ãšã¯ã2011 幎ã«æšæºåããã C++ã®ææ°èŠæ Œã®
ããšã§ããã
ãããŸã§ã® C++03 ãšã¯æ¯ã¹ç©ã«ãªããªãã»ã©ãŸãšãã«
ãªã£ããããã§äžäººåã®èšèªã«ã
ã³ã¢èšèªã®æ©èœãæ¡åŒµãããä»ãŸã§ã«åºæ¥ãªãã£ããã
é¢åãããé åããããŠå®çŸããŠããããããã®ããšã
ç°¡åã«ã§ããããã«ã
æšæºã©ã€ãã©ãªã倧ããæ¡å
ãããããããã®äŸ¿å©ãªã©
ã€ãã©ãªãç°¡åã«å©çšã§ããããã«ã
ããã§ããŠå®è¡æé床ã¯å€ãããªããããããéã
ãªã£ãã
èŠããã« C++11 æé«ã
hatsusato C++11
15. C++11 is �
C++11 ã§ã§ããããš
.. C++11 ã§ã§ããããš
auto
range-based for
initializer list
nullptr
lambda expression
move semantics
constexpr
useful and powerful libraries
æéã®éœåã«ããå²æããŸãã
and more!
hatsusato C++11
17. C++11 is �
C++11 ã§ã§ããããš
.. auto
.
ãããŸã§
..
......
for(std :: vector <std ::pair <std:: string ,std :: string > >::
const_iterator it=v.begin (); it!=v.end (); ++it){
// do something.
}
å€æ°ãåæåããéã«ã¯ãå¿
ãå€æ°ã®åãæ瀺çã«æå®
ããå¿
èŠãããããæã«ã¯è€éãªååãæžããªããã°ãª
ããªãããšãããã
ç¹ã«ãã³ãã¬ãŒãã絡ããšãå³èŸºã®åŒã®åãã©ããªåã«
ãªãã®ããç¥ãããšãå°é£ã«ãªãããšãããã
ãããããããã«ããå³èŸºã®åŒã®åã¯äžæã«å®ãŸãã®ã§
å€æ°ã®åã¯èªæã§ããã
hatsusato C++11
18. C++11 is �
C++11 ã§ã§ããããš
.. auto
.
ãããã
..
......
for(auto it=std :: begin(v); it!= std :: end(v); ++it){
// do something.
}
C++ã¯åæšè«ãæã«å
¥ããïŒ
ã³ã³ãã€ã©ã¯å³èŸºã®åŒã®åãç¥ã£ãŠããã®ã§ãèªåçã«
auto ãå³èŸºã®åŒã®åã«çœ®ãæããŠãããã
çŽ äººããç人ãŸã§ã誰ã§ãç°¡åã«äœ¿ããŠèª°ã§ãå©çã享
åã§ããã®ã§ãã©ãã©ã䜿ããŸãããã
hatsusato C++11
19. C++11 is �
C++11 ã§ã§ããããš
.. auto
.
ãããŸã§
..
......
for(std :: vector <std ::pair <std:: string ,std :: string > >::
const_iterator it=v.begin (); it!=v.end (); ++it){
// do something.
}
.
ãããã
..
......
for(auto it=std :: begin(v); it!= std :: end(v); ++it){
// do something.
}
hatsusato C++11
21. C++11 is �
C++11 ã§ã§ããããš
.. range-based for
.
ãããŸã§
..
......
for(std :: vector <std ::string >:: const_iterator vit=v.begin
(); vit !=v.end (); ++vit){
for(std :: string :: const_iterator sit=vit ->begin (); sit!=
vit ->end (); ++ sit ){
// do something.
}
}
ã³ã³ããå
ã®å
šèŠçŽ ãèµ°æ»ãããšãã£ãããšã¯é »ç¹ã«èµ·
ãããããã®ãã³ã«ã€ãã¬ãŒã¿ãäœãå¿
èŠããããå¯èª
æ§ã®äœãã³ãŒãã«ãªã£ãŠããŸãã
ã€ãã¬ãŒã¿ã¯ãã€ã³ã¿ã®ãããªãã®ãªã®ã§ããã¡ãã¡é
æ¥åç
§ããå¿
èŠããããã³ã³ããã®ã³ã³ãããèµ°æ»ãã
ããããšå¯èªæ§ãèããæãªãã
hatsusato C++11
22. C++11 is �
C++11 ã§ã§ããããš
.. range-based for
.
ãããã
..
......
for(auto vx : v){
for(auto sx : vx){
// do something.
}
}
ã³ã³ããã®å
šèŠçŽ ãèµ°æ»ãããæã§ããã°ããã¡ãã¡ã€
ãã¬ãŒã¿ãäœãå¿
èŠããªããªã£ããåè¿°ã® auto ã䜵çšã
ãããšã§ã³ã³ããã®èŠçŽ ã®åãæå®ããå¿
èŠããªãã
ã³ã³ããã®åèŠçŽ ãåç
§ã§åãåããã®ã§ãã€ãã¬ãŒã¿
ã®æãšéã£ãŠéæ¥åç
§ããå¿
èŠããªããã³ã³ããã®ã³ã³
ããã®èµ°æ»ãé£ãªãæžããã
ãããç°¡åã«äœ¿ããã®ã§ã©ãã©ã䜿ããŸãããã
hatsusato C++11
23. C++11 is �
C++11 ã§ã§ããããš
.. range-based for
.
ãããŸã§
..
......
for(std :: vector <std ::string >:: const_iterator vit=v.begin
(); vit !=v.end (); ++vit){
for(std :: string :: const_iterator sit=vit ->begin (); sit!=
vit ->end (); ++ sit ){
// do something.
}
}
.
ãããã
..
......
for(auto vx : v){
for(auto sx : vx){
// do something.
}
}
hatsusato C++11
25. C++11 is �
C++11 ã§ã§ããããš
.. initializer list
.
ãããŸã§
..
......
int tmp []={13 ,22 ,37 ,41 ,58};
std :: vector <int > v(tmp ,tmp +5);
// vã«13 ,22 ,37 ,41 ,58 ã æ Œ çŽ ã ã ã
v.clear ();
v.push_back (13);
v.push_back (22);
v.push_back (37);
v.push_back (41);
v.push_back (58);
// vã«13 ,22 ,37 ,41 ,58 ã æ Œ çŽ ã 㪠ã ã ã
ã³ã³ãããããã€ãã®ããŒã¿ã§åæåããããã«ã¯ãçŸ
ç¶ã§ã¯äžèšã®ããã«äžæçã«é
åãäœã£ãããpush back
ã䞊ã¹ããããå¿
èŠããããå¯èªæ§ãããŸããããªãã
hatsusato C++11
26. C++11 is �
C++11 ã§ã§ããããš
.. initializer list
.
ãããã
..
......
std :: vector <int > v={13 ,22 ,37 ,41 ,58};
å¯èªæ§ãããã
åŸæ¥ã®æ§é äœãé
åã®åæåãšåãæ§æã§ããããŸãé
åžžã®ã³ã³ã¹ãã©ã¯ã¿ã {} ã§åŒã³åºããããã«ãªã£ãã®
ã§ããåæå㯠{}ãé¢æ°åŒã³åºã㯠()ããšããããã«åœ¹
å²åæ
ããããšã§ã³ãŒããããæ確ã«ãªãã
å€æ°ã®åæåã®å Žé¢ã§ {} ãã©ãã©ã䜿ããŸãããã
hatsusato C++11
27. C++11 is �
C++11 ã§ã§ããããš
.. initializer list
.
ãããŸã§
..
......
int tmp []={13 ,22 ,37 ,41 ,58};
std :: vector <int > v(tmp ,tmp +5);
// vã«13 ,22 ,37 ,41 ,58 ã æ Œ çŽ ã ã ã
v.clear ();
v.push_back (13);
v.push_back (22);
v.push_back (37);
v.push_back (41);
v.push_back (58);
// vã«13 ,22 ,37 ,41 ,58 ã æ Œ çŽ ã 㪠ã ã ã
.
ãããã
..
......
std :: vector <int > v={13 ,22 ,37 ,41 ,58};
hatsusato C++11
29. C++11 is �
C++11 ã§ã§ããããš
.. nullptr
.
ãããŸã§
..
......
// é¢ æ° ãª ãŒ ã ㌠ã ㌠ã
void f(int ){ std ::cout <<"f(int)"<<std :: endl ;}
void f(int *){ std ::cout <<"f(int *)"<<std :: endl ;}
f(NULL ); // ã³ ã³ ã ã€ ã« ãš ã© ãŒ ïŒ æ æ§ ãª ãª ãŒ ã ㌠ã ㌠ã
ãããã C ã§ã¯
#define NULL ((void*)0)
ãšãªã£ãŠããããC++ã§ã¯ (void*) ããä»»æã®ãã€ã³ã¿
ãžã®æé»å€æãã§ããªãããã®ãããC++11 以åã§ã¯
#define NULL 0
ãšãªã£ãŠããããã£ãŠãNULL ãæ°å€ã® (int)0 ãšè§£éã
ã¹ããããã«ãã€ã³ã¿ã® (int*)0 ãšè§£éãã¹ããææ§ã«
ãªã£ãŠããŸãã
hatsusato C++11
30. C++11 is �
C++11 ã§ã§ããããš
.. nullptr
.
ãããã
..
......
// é¢ æ° ãª ãŒ ã ㌠ã ㌠ã
void f(int ){ std ::cout <<"f(int)"<<std :: endl ;}
void f(int *){ std ::cout <<"f(int *)"<<std :: endl ;}
f(nullptr ); // > f(int *)
C++11 ããã¯ä»»æã®ãã€ã³ã¿ãžæé»å€æå¯èœãª
nullptr t åã®ããŒã¯ãŒã nullptr ãè¿œå ãããããã
ããåé¡ã¯ãªããªã£ãã
ãã¯ã NULL ã䜿ãæå³ã¯ãããŸããããã«ãã€ã³ã¿ã䜿
ããããšããã«ã¯ nullptr ã䜿ããŸãããã
hatsusato C++11
31. C++11 is �
C++11 ã§ã§ããããš
.. nullptr
.
é¢æ°å®çŸ©
..
......
// é¢ æ° ãª ãŒ ã ㌠ã ㌠ã
void f(int ){ std ::cout <<"f(int)"<<std :: endl ;}
void f(int *){ std ::cout <<"f(int *)"<<std :: endl ;}
.
ãããŸã§
..
......
f(NULL ); // ã³ ã³ ã ã€ ã« ãš ã© ãŒ ïŒ æ æ§ ãª ãª ãŒ ã ㌠ã ㌠ã
.
ãããã
..
......
f(nullptr ); // > f(int *)
hatsusato C++11
33. C++11 is �
C++11 ã§ã§ããããš
.. lambda expression
.
ãããŸã§
..
......
struct AbsoluteLess {
bool operator ()( int lhs , int rhs){
return std :: abs(lhs)<std :: abs(rhs );
}
};
std :: sort(v.begin (), v.end(), AbsoluteLess ());
// 絶 察 å€ ã® å€§ å° ã§ ãœ ãŒ ã
C++11 以åã¯ã¢ã«ãŽãªãºã ããšã«é¢æ°ãé¢æ°ãªããžã§ã¯
ããäœãå¿
èŠããã£ããããšãäžåºŠãããã䜿ããªãã¢
ã«ãŽãªãºã ã§ãã£ãŠããã¡ãã¡é¢æ°ïŒãªããžã§ã¯ãïŒã
äœã£ãŠãããããã®æ¹æ³ã¯èšè¿°éãå€ããã³ãŒãã®æµã
ããããã¥ããããŸããåå空éäžã«äœåãªååãããµ
ããããšã«ã€ãªããã
hatsusato C++11
34. C++11 is �
C++11 ã§ã§ããããš
.. lambda expression
.
ãããã
..
......
std :: sort(std :: begin(v), std ::end(v),
[]( int lhs , int rhs)->bool
{return std ::abs(lhs)<std:: abs(rhs );});
ã©ã ãåŒã®ç»å Žã«ãããã¢ã«ãŽãªãºã ãè¡šãé¢æ°ïŒãªã
ãžã§ã¯ãïŒãäœã代ããã«ã©ã ãåŒïŒã€ãŸãç¡åé¢æ°ãª
ããžã§ã¯ãïŒã§ä»£çšã§ããããã«ãªã£ããããã«ããäœ
åãªååãåå空éã«ã¯ã³ããããšãªãã³ãŒãããã£ã
ããšæžãããšãã§ããããã«ãªã£ãã
hatsusato C++11
35. C++11 is �
C++11 ã§ã§ããããš
.. lambda expression
.
ãããŸã§
..
......
struct AbsoluteLess {
bool operator ()( int lhs , int rhs){
return std :: abs(lhs)<std :: abs(rhs );
}
};
std :: sort(v.begin (), v.end(), AbsoluteLess ());
// 絶 察 å€ ã® å€§ å° ã§ ãœ ãŒ ã
.
ãããã
..
......
std :: sort(std :: begin(v), std ::end(v),
[]( int lhs , int rhs)->bool
{return std ::abs(lhs)<std:: abs(rhs );});
hatsusato C++11
37. C++11 is �
C++11 ã§ã§ããããš
.. move semantics
.
MyString ã¯ã©ã¹
..
......
class MyString{
char* _data;
size_t _size;
public:
MyString(const MyString& str) // copy constructor
:_data(new char[str._size ]), _size(str._size ){
std:: copy(str._data , str._data+_size , _data );
}
MyString(MyString && str) // move constructor
:_data(str._data), _size(str._size ){
str._data=nullptr;
str._size =0;
}
// other functions ...
};
hatsusato C++11
38. C++11 is �
C++11 ã§ã§ããããš
.. move semantics
.
ãããŸã§
..
......
MyString :: MyString(const MyString& str)
:_data(new char[str._size ]), _size(str._size ){
std :: copy(str._data , str._data+_size , _data );
}
C++11 以åã¯ããŒã¿ã®è€è£œãäœãéã«ã¯ããããæã§ã³
ããŒãè¡ãããŠããããããåœããåã ã£ãã
hatsusato C++11
39. C++11 is �
C++11 ã§ã§ããããš
.. move semantics
.
ãããã
..
......
MyString :: MyString(MyString && str)
:_data(str._data), _size(str._size ){
str._data=nullptr;
str._size =0;
}
C++11 ã§ã¯å³èŸºå€åç
§ãšããæŠå¿µãè¿œå ãããããå¹ç
ã®ããããŒã¿ã®è€è£œæ¹æ³ãæäŸãããããã«ãªã£ãã
é¢æ°ã®æ»ãå€ãªã©ã®ã代å
¥ããããšã®ã§ããªããªããžã§
ã¯ããå³èŸºå€ãšåŒã¶ãmove ãšã¯å³èŸºå€ãè€è£œããéã«
ã³ããŒãããããã€ã³ã¿ã®ä»ãæ¿ããªã©ã«ãã£ãŠããŒã¿
ã移è²ããæè¡ã®ããšã§ããã
hatsusato C++11
40. C++11 is �
C++11 ã§ã§ããããš
.. move semantics
.
ãããã
..
......
MyString :: MyString(MyString && str)
:_data(str._data), _size(str._size ){
str._data=nullptr;
str._size =0;
}
move ã¯äž»ã«ãŠãŒã¶ã³ãŒãåŽã§ã¯ãªãã©ã€ãã©ãªæäŸåŽ
ãå©çšããæè¡ãªã®ã§ããŠãŒã¶ã³ãŒããç¹ã«å€æŽããã
ãšãªãæ©æµãåããããã
STL ãªã©ã®å³èŸºå€åç
§ã«å¯Ÿå¿ããã©ã€ãã©ãªãçšãã
ã³ãŒãã®å®è¡æé床ããC++11 ãšããŠã³ã³ãã€ã«ããã
ãã§ãç¥ããç¥ããã®ãã¡ã«åäžããã
move semantics çŽ æŽãããã
hatsusato C++11
42. C++11 is �
C++11 ã§ã§ããããš
.. constexpr
.
ãããŸã§
..
......
#define CUBE(x) (x*x*x)
#define SIDE_SIZE (10)
#define ARRAY_SIZE (CUBE(SIDE_SIZE ))
double array[ARRAY_SIZE ]; // 10^3 å ã® å€ ã æ Œ çŽ ã ã é
å
C++11 以åã¯ãé
åã®èŠçŽ æ°ãšããŠäœ¿ããã®ã¯ãæŽæ°å®
æ°ãŸãã¯æŽæ°å®æ°ã§åæåããã const ãªå€æ°ãšæŽæ°å®
æ°ã§#define ããã·ã³ãã«ã®ã¿ã§ãã£ãã
å®æ°ããèšç®ããŠåŸãããçµæã¯å®æ°ã§ã¯ç¡ãã®ã§ãã
ã®çµæã const å€æ°ã«ä»£å
¥ããŠããé
åã®èŠçŽ æ°ãšããŠ
ã¯äœ¿ããªãã
ãããã«äžèšã®ããã«ããŠè¡šçŸããããšã¯åºæ¥ããã
#define ã¯åå®å
šã§ã¯ç¡ãã®ã§ãC++ã«ãããŠäœ¿ãã®ã¯
ã§ããã ãé¿ããã¹ãã§ããã
hatsusato C++11
43. C++11 is �
C++11 ã§ã§ããããš
.. constexpr
.
ãããã
..
......
constexpr int Cube(int x){ return x*x*x;}
constexpr int SIDE_SIZE =10;
constexpr int ARRAY_SIZE=Cube(SIDE_SIZE );
double array[ARRAY_SIZE ]; // 10^3 å ã® å€ ã æ Œ çŽ ã ã é
å
C++11 ãã constexpr ãšããããŒã¯ãŒããè¿œå ãããã³
ã³ãã€ã«æå®æ°ãšã³ã³ãã€ã«æé¢æ°ãå®çŸ©ããããšãã§
ããããã«ãªã£ãã
ã³ã³ãã€ã«æå®æ°ã«ã¯ã³ã³ãã€ã«æã«æ±ºå®å¯èœãªå€ãæ
å®ããããšãã§ããã³ã³ãã€ã«æã«ãã®å€ã«çœ®ãæãã
ããã
hatsusato C++11
44. C++11 is �
C++11 ã§ã§ããããš
.. constexpr
.
ãããã
..
......
constexpr int Cube(int x){ return x*x*x;}
constexpr int SIDE_SIZE =10;
constexpr int ARRAY_SIZE=Cube(SIDE_SIZE );
double array[ARRAY_SIZE ]; // 10^3 å ã® å€ ã æ Œ çŽ ã ã é
å
ã³ã³ãã€ã«æé¢æ°ã¯é¢æ°å
ã§èšè¿°ã§ããåŠçãå¶éãã
ãŠãããã®ã®ãå
šãŠã®åŒæ°ãã³ã³ãã€ã«æå®æ°ãªãã°æ»
ãå€ãã³ã³ãã€ã«æã«èšç®ãããã³ã³ãã€ã«æå®æ°ã
const å®æ°ã®åæåã«äœ¿ãããšãã§ãããåŒæ°ã®äžéšã
å®è¡æã«æ±ºå®ãããå Žåã¯ãã³ã³ãã€ã«ãšã©ãŒã«ãªãã
ãšãªããå®è¡æã«èšç®ãããã
äžèšã®ããã«ã³ã³ãã€ã«æé¢æ°ã«ã¯æ»ãå€ã®åãããã
åå®å
šã§ããã
hatsusato C++11
45. C++11 is �
C++11 ã§ã§ããããš
.. 䟿å©ãªã©ã€ãã©ãªçŸ€
ã¹ããŒããã€ã³ã¿ (shared ptr, weak ptr, unique ptr)
æ¬äŒŒä¹±æ°çæ (ã¡ã«ã»ã³ããã€ã¹ã¿ãªã©)
æ£èŠè¡šçŸ
ããã·ã¥è¡š (unordered map, unordered set)
ã¹ã¬ããã©ã€ãã©ãª
ãã®ä»ããããã®äŸ¿å©æ©èœè¿œå ä¿®æ£
ãŸãã®æ©äŒã«ã
hatsusato C++11
47. C++11 is �
C++11 ã§ã§ããããš
.. C++11 ã®å©çšæ¹æ³
C++11 ã¯ã€ãæè¿ç¢ºå®ããã°ããã®å·šå€§ãªèŠæ Œãªã®ã§ã
C++11 察å¿ããã³ã³ãã€ã©ã¯ãŸã å°ãªãã®ãçŸç¶ã§ãã
hatsusato C++11
48. C++11 is �
C++11 ã§ã§ããããš
.. C++11 ã®å©çšæ¹æ³
C++11 ã¯ã€ãæè¿ç¢ºå®ããã°ããã®å·šå€§ãªèŠæ Œãªã®ã§ã
C++11 察å¿ããã³ã³ãã€ã©ã¯ãŸã å°ãªãã®ãçŸç¶ã§ãã
äŸãã° gcc ã§ã¯ãgcc4.3 以éã§-std=c++11 ãªãã·ã§ã³
ïŒ-std=c++11 ã® c ã¯å°æåãªã®ã§æ³šæïŒãæå®ããããš
㧠C++11 ã®ã³ãŒããšããŠã³ã³ãã€ã«ã§ããããã«ãªã£ãŠ
ããŸãã
hatsusato C++11
49. C++11 is �
C++11 ã§ã§ããããš
.. C++11 ã®å©çšæ¹æ³
C++11 ã¯ã€ãæè¿ç¢ºå®ããã°ããã®å·šå€§ãªèŠæ Œãªã®ã§ã
C++11 察å¿ããã³ã³ãã€ã©ã¯ãŸã å°ãªãã®ãçŸç¶ã§ãã
äŸãã° gcc ã§ã¯ãgcc4.3 以éã§-std=c++11 ãªãã·ã§ã³
ïŒ-std=c++11 ã® c ã¯å°æåãªã®ã§æ³šæïŒãæå®ããããš
㧠C++11 ã®ã³ãŒããšããŠã³ã³ãã€ã«ã§ããããã«ãªã£ãŠ
ããŸãã
ã¡ãªã¿ã«ä»åã®ã¹ã©ã€ãã®ã³ãŒãã¹ãããã㯠gcc
version 4.7.2 ã§å®è¡ç¢ºèªããŸããã
hatsusato C++11
50. C++11 is �
C++11 ã§ã§ããããš
.. C++11 ã®å©çšæ¹æ³
C++11 ã¯ã€ãæè¿ç¢ºå®ããã°ããã®å·šå€§ãªèŠæ Œãªã®ã§ã
C++11 察å¿ããã³ã³ãã€ã©ã¯ãŸã å°ãªãã®ãçŸç¶ã§ãã
äŸãã° gcc ã§ã¯ãgcc4.3 以éã§-std=c++11 ãªãã·ã§ã³
ïŒ-std=c++11 ã® c ã¯å°æåãªã®ã§æ³šæïŒãæå®ããããš
㧠C++11 ã®ã³ãŒããšããŠã³ã³ãã€ã«ã§ããããã«ãªã£ãŠ
ããŸãã
ã¡ãªã¿ã«ä»åã®ã¹ã©ã€ãã®ã³ãŒãã¹ãããã㯠gcc
version 4.7.2 ã§å®è¡ç¢ºèªããŸããã
ãã¯ã C++03 ã§ã³ãŒããæžãããšã¯å€§ããªæ倱ã«ä»ãªã
ãŸããããããã C++ã䜿ããšãã¯æ¯é C++11 ã䜿ã
ãŸãããã
hatsusato C++11
51. C++11 is �
C++11 ã§ã§ããããš
.. ãŸãšã
C++11 ã¯æžãããããèªã¿ãããããŸãéãã³ãŒããç°¡
åã«æžãããšãã§ããïŒçŽ æŽãããïŒ
hatsusato C++11
52. C++11 is �
C++11 ã§ã§ããããš
.. èšæ£
//do something. ã®éšå㧠v ã«å¯ŸããŠå€æŽãå ããªãã®ã§ã
ãã°ãauto ã§ã¯ãªããŠãconst auto ã§ããã¹ãã
.
auto
..
......
for(const auto it=std:: begin(v); it!=std:: end(v); ++it){
// do something.
}
.
range-based for
..
......
for(const auto& vx : v){
for(const auto& sx : vx){
// do something.
}
}
hatsusato C++11