没有合适的资源?快使用搜索试试~ 我知道了~
首页精通C++11:一小时学会
精通C++11:一小时学会
需积分: 9 2 下载量 58 浏览量
更新于2024-07-22
收藏 10.07MB PDF 举报
"Teach yourself C++ - Sams Teach Yourself C++ in One Hour a Day, Seventh Edition by Siddhartha Rao"
本书“Teach yourself C++”是Sams Teach Yourself系列的第七版,旨在帮助读者逐步掌握C++11新标准下的编程技能。C++11在2011年被正式批准,引入了新的关键字和构造,以提高编程效率和代码质量。作者Siddhartha Rao将学习过程细致地划分成一系列课程,使读者无论何种熟练程度,都能以小时为单位逐步精通C++。
C++是一种面向对象的编程语言,其核心在于封装、继承和多态性。通过实践是学习C++的最佳途径,书中提供了丰富的代码示例,鼓励读者亲自动手尝试,以提升编程能力。这些示例已经过当时最新版本的编译器测试,包括Microsoft Visual C++ 2010和GNU的C++编译器4.6版,这两个编译器都支持C++11的众多特性。
C++11的新特性包括:
1. **自动类型推断(Auto keyword)**:使用`auto`关键字可以简化变量声明,编译器会自动推断变量的类型。
2. **右值引用(Rvalue references)**:支持移动语义,使得资源的高效转移成为可能,改善了对象的复制性能。
3. **Lambda表达式**:允许在程序中直接定义匿名函数,提高了代码的简洁性和灵活性。
4. **范围基础的for循环(Range-based for loop)**:简化遍历容器元素的代码,使得遍历更加直观。
5. ** nullptr**:作为空指针常量的新表示,替代了`NULL`,避免了与整型零的混淆。
6. **多线程支持**:C++11引入了内置的多线程API,方便开发多线程应用程序。
7. **统一初始化**:改进了对象和数组的初始化方式,减少了错误的可能性。
8. **类型安全的字面量**:如`std::string("hello")`创建字符串,避免了隐式类型转换导致的问题。
9. **静态断言(Static_assert)**:编译时检查,提供更友好的错误信息。
此外,书中还涵盖了基础的编程概念,如数据类型、控制流、函数、类和对象、模板等,以及高级主题,如异常处理、命名空间和模板元编程。对于每个主题,都会详细解释理论,并配以实例进行演示。
本书适合作为C++初学者的入门教程,同时也适合有一定C++基础,希望更新知识到C++11标准的开发者。通过系统的自学,读者可以在实践中逐步理解并掌握C++11的新特性和最佳实践,从而提升编程效率和代码质量。
ptg7987094
LESSON 19: STL Set Classes 467
An Introduction to STL Set Classes ............................................................................................................................ 468
Basic STL set and multiset Operations ..................................................................................................................... 468
Instantiating a std::set Object ............................................................................................................................ 469
Inserting Elements in a set or multiset . ..................................................................................................... 471
Finding Elements in an STL set or multiset . .......................................................................................... 473
Erasing Elements in an STL set or multiset . .......................................................................................... 475
Pros and Cons of Using STL set and multiset . ..................................................................................................... 480
Summary ............................................................................................................................................................................................. 484
Q&A........................................................................................................................................................................................................ 484
Workshop . ........................................................................................................................................................................................ 485
LESSON 20: STL Map Classes 487
An Introduction to STL Map Classes . ....................................................................................................................... 488
Basic std::map and std::multimap Operations . ..................................................................................................... 489
Instantiating a std::map or std::multimap . .............................................................................................. 489
Inserting Elements in an STL map or multimap ................................................................................. 491
Finding Elements in an STL map . ................................................................................................................ 494
Finding Elements in an STL multimap . ..................................................................................................... 496
Erasing Elements from an STL map or multimap . ............................................................................ 497
Supplying a Custom Sort Predicate. .............................................................................................................................. 499
How Hash Tables Work . ......................................................................................................................................... 504
Using C++11 Hash Tables: unordered_map and unordered_multimap ........................... 504
Summary ............................................................................................................................................................................................. 508
Q&A........................................................................................................................................................................................................ 509
Workshop . ........................................................................................................................................................................................ 510
PART IV : More STL
LESSON 21: Understanding Function Objects 511
The Concept of Function Objects and Predicates. .............................................................................................. 512
Typical Applications of Function Objects. ................................................................................................................ 512
Unary Functions. ........................................................................................................................................................... 512
Unary Predicate . ........................................................................................................................................................... 517
Binary Functions ......................................................................................................................................................... 519
Binary Predicate. ........................................................................................................................................................... 522
Contents
xv
www.it-ebooks.info
ptg7987094
Summary ............................................................................................................................................................................................. 524
Q&A........................................................................................................................................................................................................ 524
Workshop . ........................................................................................................................................................................................ 525
LESSON 22: C++11 Lambda Expressions 527
What Is a Lambda Expression? ....................................................................................................................................... 528
How to Define a Lambda Expression . ....................................................................................................................... 529
Lambda Expression for a Unary Function . ............................................................................................................ 529
Lambda Expression for a Unary Predicate . ............................................................................................................ 531
Lambda Expression with State via Capture Lists [...] . ................................................................................... 532
The Generic Syntax of Lambda Expressions.......................................................................................................... 534
Lambda Expression for a Binary Function . ............................................................................................................ 535
Lambda Expression for a Binary Predicate. ............................................................................................................ 537
Summary ............................................................................................................................................................................................. 540
Q&A........................................................................................................................................................................................................ 541
Workshop . ........................................................................................................................................................................................ 541
LESSON 23: STL Algorithms 543
What Are STL Algorithms? . ............................................................................................................................................. 544
Classification of STL Algorithms . .................................................................................................................................. 544
Non-Mutating Algorithms . .................................................................................................................................. 544
Mutating Algorithms.................................................................................................................................................. 545
Usage of STL Algorithms . .................................................................................................................................................... 547
Finding Elements Given a Value or a Condition ................................................................................. 547
Counting Elements Given a Value or a Condition . ............................................................................ 550
Searching for an Element or a Range in a Collection...................................................................... 552
Initializing Elements in a Container to a Specific Value ............................................................... 554
Using std::generate() to Initialize Elements to a Value Generated at Runtime. ........... 556
Processing Elements in a Range Using for_each() . ........................................................................ 557
Performing Transformations on a Range Using std::transform() . ........................................ 560
Copy and Remove Operations. ........................................................................................................................... 562
Replacing Values and Replacing Element Given a Condition . ............................................... 565
Sorting and Searching in a Sorted Collection and Erasing Duplicates . ............................. 567
Partitioning a Range .................................................................................................................................................. 570
Inserting Elements in a Sorted Collection . .............................................................................................. 572
Summary ............................................................................................................................................................................................. 575
Q&A........................................................................................................................................................................................................ 575
Workshop . ........................................................................................................................................................................................ 576
xvi
Sams Teach Yourself C++ in One Hour a Day
www.it-ebooks.info
ptg7987094
LESSON 24: Adaptive Containers: Stack and Queue 579
The Behavioral Characteristics of Stacks and Queues. ................................................................................... 580
Stacks .................................................................................................................................................................................. 580
Queues . ................................................................................................................................................................................. 580
Using the STL stack Class . ................................................................................................................................................ 581
Instantiating the Stack .............................................................................................................................................. 581
Stack Member Functions ....................................................................................................................................... 582
Insertion and Removal at Top Using push() and pop() . ................................................................. 583
Using the STL queue Class . ................................................................................................................................................ 585
Instantiating the Queue . ......................................................................................................................................... 585
Member Functions of a queue............................................................................................................................ 586
Insertion at End and Removal at the Beginning of queue via push()
and pop() ........................................................................................................................................................................... 587
Using the STL Priority Queue . ......................................................................................................................................... 589
Instantiating the priority_queue Class.......................................................................................................... 589
Member Functions of priority_queue .......................................................................................................... 590
Insertion at the End and Removal at the Beginning of priority_queue via
push() and pop(). ........................................................................................................................................................... 591
Summary ............................................................................................................................................................................................. 594
Q&A........................................................................................................................................................................................................ 594
Workshop . ........................................................................................................................................................................................ 594
LESSON 25: Working with Bit Flags Using STL 597
The bitset Class ........................................................................................................................................................................... 598
Instantiating the std::bitset . .................................................................................................................................. 598
Using std::bitset and Its Members. .................................................................................................................................. 599
Useful Operators Featured in std::bitset ................................................................................................... 599
std::bitset Member Methods ................................................................................................................................ 600
The vector<bool> . ...................................................................................................................................................................... 603
Instantiating vector<bool> . .................................................................................................................................. 603
vector<bool> Functions and Operators . ..................................................................................................... 604
Summary ............................................................................................................................................................................................. 605
Q&A........................................................................................................................................................................................................ 605
Workshop . ........................................................................................................................................................................................ 606
Contents
xvii
www.it-ebooks.info
ptg7987094
PART V: Advanced C++ Concepts
LESSON 26: Understanding Smart Pointers 607
What Are Smart Pointers?. .................................................................................................................................................... 608
The Problem with Using Conventional (Raw) Pointers ............................................................... 608
How Do Smart Pointers Help? . ....................................................................................................................... 608
How Are Smart Pointers Implemented? ..................................................................................................................... 609
Types of Smart Pointers ......................................................................................................................................................... 610
Deep Copy . ...................................................................................................................................................................... 611
Copy on Write Mechanism. .................................................................................................................................. 613
Reference-Counted Smart Pointers . ............................................................................................................ 613
Reference-Linked Smart Pointers . ................................................................................................................ 614
Destructive Copy ......................................................................................................................................................... 614
Using the std::unique_ptr ....................................................................................................................................... 617
Popular Smart Pointer Libraries ....................................................................................................................................... 618
Summary ............................................................................................................................................................................................. 619
Q&A........................................................................................................................................................................................................ 619
Workshop . ........................................................................................................................................................................................ 620
LESSON 27: Using Streams for Input and Output 621
Concept of Streams .................................................................................................................................................................... 622
Important C++ Stream Classes and Objects .......................................................................................................... 623
Using std::cout for Writing Formatted Data to Console . ............................................................................ 624
Changing Display Number Formats Using std::cout . ..................................................................... 624
Aligning Text and Setting Field Width Using std::cout ............................................................... 627
Using std::cin for Input ......................................................................................................................................................... 628
Using std::cin for Input into a Plain Old Data Type. ........................................................................ 628
Using std::cin::get for Input into C-Style char Buffer . ................................................................. 629
Using std::cin for Input into a std::string................................................................................................... 630
Using std::fstream for File Handling ............................................................................................................................ 632
Opening and Closing a File Using open() and close() . ................................................................. 632
Creating and Writing a Text File Using open() and operator<< ............................................. 634
Reading a Text File Using open() and operator>>. ............................................................................ 635
Writing to and Reading from a Binary File ............................................................................................ 636
Using std::stringstream for String Conversions ................................................................................................... 638
Summary ............................................................................................................................................................................................. 640
Q&A........................................................................................................................................................................................................ 640
Workshop . ........................................................................................................................................................................................ 641
xviii
Sams Teach Yourself C++ in One Hour a Day
www.it-ebooks.info
ptg7987094
LESSON 28: Exception Handling 643
What Is an Exception? . ........................................................................................................................................................... 644
What Causes Exceptions? ..................................................................................................................................................... 644
Implementing Exception Safety via try and catch . .......................................................................................... 645
Using catch(...) to Handle All Exceptions . .............................................................................................. 645
Catching Exception of a Type ............................................................................................................................ 647
Throwing Exception of a Type Using throw ........................................................................................ 648
How Exception Handling Works . .................................................................................................................................. 650
Class std::exception . ................................................................................................................................................ 652
You r C us to m E xc epti on Cl as s D erived fr om st d: :e xc ep tion .................................................... 653
Summary ............................................................................................................................................................................................. 655
Q&A........................................................................................................................................................................................................ 656
Workshop . ........................................................................................................................................................................................ 656
LESSON 29: Going Forward 659
What’s Different in Today’s Processors? . ................................................................................................................ 660
How to Better Use Multiple Cores ................................................................................................................................ 661
What Is a Thread? . .................................................................................................................................................... 661
Why Program Multithreaded Applications? . .......................................................................................... 662
How Can Threads Transact Data? . ................................................................................................................ 663
Using Mutexes and Semaphores to Synchronize Threads . .......................................................... 664
Problems Caused by Multithreading. ............................................................................................................ 664
Writing Great C++ Code . .................................................................................................................................................... 665
Learning C++ Doesn’t Stop Here! . .............................................................................................................................. 667
Online Documentation.............................................................................................................................................. 667
Communities for Guidance and Help .......................................................................................................... 668
Summary ............................................................................................................................................................................................. 668
Q&A........................................................................................................................................................................................................ 668
Workshop . ........................................................................................................................................................................................ 669
Appendixes
APPENDIX A: Working with Numbers: Binary and Hexadecimal 671
Decimal Numeral System . .................................................................................................................................................... 672
Binary Numeral System ......................................................................................................................................................... 672
Why Do Computers Use Binary? . ................................................................................................................ 673
Contents
xix
www.it-ebooks.info
剩余766页未读,继续阅读
2018-01-12 上传
2018-04-24 上传
2023-10-14 上传
2023-07-12 上传
2023-11-06 上传
2023-05-26 上传
2023-05-27 上传
2024-09-20 上传
2024-09-13 上传
blackcoffee610
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- WPF渲染层字符绘制原理探究及源代码解析
- 海康精简版监控软件:iVMS4200Lite版发布
- 自动化脚本在lspci-TV的应用介绍
- Chrome 81版本稳定版及匹配的chromedriver下载
- 深入解析Python推荐引擎与自然语言处理
- MATLAB数学建模算法程序包及案例数据
- Springboot人力资源管理系统:设计与功能
- STM32F4系列微控制器开发全面参考指南
- Python实现人脸识别的机器学习流程
- 基于STM32F103C8T6的HLW8032电量采集与解析方案
- Node.js高效MySQL驱动程序:mysqljs/mysql特性和配置
- 基于Python和大数据技术的电影推荐系统设计与实现
- 为ripro主题添加Live2D看板娘的后端资源教程
- 2022版PowerToys Everything插件升级,稳定运行无报错
- Map简易斗地主游戏实现方法介绍
- SJTU ICS Lab6 实验报告解析
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功