Details
Title | Modern C++ programming cookbook: master C++ core language and standard library features, with over 100 recipes, updated to C++20. — Second edition. |
---|---|
Creators | Bancila Marius |
Collection | Электронные книги зарубежных издательств ; Общая коллекция |
Subjects | C++ (Computer program language) ; Computer programming. ; EBSCO eBooks |
Document type | Other |
File type | |
Language | English |
Rights | Доступ по паролю из сети Интернет (чтение, печать, копирование) |
Record key | on1198583887 |
Record create date | 9/16/2020 |
Allowed Actions
pdf/2621661.pdf | – |
Action 'Read' will be available if you login or access site from another network
Action 'Download' will be available if you login or access site from another network
|
---|---|---|
epub/2621661.epub | – |
Action 'Download' will be available if you login or access site from another network
|
Group | Anonymous |
---|---|
Network | Internet |
Network | User group | Action |
---|---|---|
ILC SPbPU Local Network | All |
|
Internet | Authorized users SPbPU |
|
Internet | Anonymous |
|
- Cover
- Copyright
- Packt Page
- Contributors
- Table of Contents
- Preface
- Chapter 1: Learning Modern Core Language Features
- Using auto whenever possible
- How to do it...
- How it works...
- See also
- Creating type aliases and alias templates
- How to do it...
- How it works...
- See also
- Understanding uniform initialization
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Understanding the various forms of non-static member initialization
- How to do it...
- How it works...
- See also
- Controlling and querying object alignment
- Getting ready
- How to do it...
- How it works...
- See also
- Using scoped enumerations
- How to do it...
- How it works...
- See also
- Using override and final for virtual methods
- Getting ready
- How to do it...
- How it works...
- See also
- Using range-based for loops to iterate on a range
- Getting ready
- How to do it...
- How it works...
- See also
- Enabling range-based for loops for custom types
- Getting ready
- How to do it...
- How it works...
- See also
- Using explicit constructors and conversion operators to avoid implicit conversion
- Getting ready
- How to do it...
- How it works...
- See also
- Using unnamed namespaces instead of static globals
- Getting ready
- How to do it...
- How it works...
- See also
- Using inline namespaces for symbol versioning
- Getting ready
- How to do it...
- How it works...
- See also
- Using structured bindings to handle multi-return values
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Simplifying code with class template argument deduction
- How to do it...
- How it works...
- See also
- Using auto whenever possible
- Chapter 2: Working with Numbers and Strings
- Converting between numeric and string types
- Getting ready
- How to do it...
- How it works...
- See also
- Limits and other properties of numeric types
- Getting ready
- How to do it...
- How it works...
- See also
- Generating pseudo-random numbers
- Getting ready
- How to do it...
- How it works...
- See also
- Initializing all bits of internal state of a pseudo-random number generator
- Getting ready
- How to do it...
- How it works...
- See also
- Creating cooked user-defined literals
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Creating raw user-defined literals
- Getting ready
- How to do it...
- How it works...
- See also
- Using raw string literals to avoid escaping characters
- Getting ready
- How to do it...
- How it works...
- See also
- Creating a library of string helpers
- Getting ready
- How to do it...
- How it works...
- See also
- Verifying the format of a string using regular expressions
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Parsing the content of a string using regular expressions
- Getting ready
- How to do it...
- How it works...
- See also
- Replacing the content of a string using regular expressions
- Getting ready
- How to do it...
- How it works...
- See also
- Using string_view instead of constant string references
- Getting ready
- How to do it...
- How it works...
- See also
- Formatting text with std::format
- Getting ready
- How to do it...
- How it works...
- See also
- Using std::format with user-defined types
- Getting ready
- How to do it...
- How it works...
- See also
- Converting between numeric and string types
- Chapter 3: Exploring Functions
- Defaulted and deleted functions
- Getting started
- How to do it...
- How it works...
- See also
- Using lambdas with standard algorithms
- Getting ready
- How to do it...
- How it works...
- See also
- Using generic and template lambdas
- Getting started
- How to do it...
- How it works...
- See also
- Writing a recursive lambda
- Getting ready
- How to do it...
- How it works...
- See also
- Writing a function template with a variable number of arguments
- Getting ready
- How to do it...
- How it works...
- See also
- Using fold expressions to simplify variadic function templates
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Implementing the higher-order functions map and fold
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Composing functions into a higher-order function
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Uniformly invoking anything callable
- Getting ready
- How to do it...
- How it works...
- See also
- Defaulted and deleted functions
- Chapter 4: Preprocessing and Compilation
- Conditionally compiling your source code
- Getting ready
- How to do it...
- How it works...
- See also
- Using the indirection pattern for preprocessor stringification and concatenation
- Getting ready
- How to do it...
- How it works...
- See also
- Performing compile-time assertion checks with static_assert
- Getting ready
- How to do it...
- How it works...
- See also
- Conditionally compiling classes and functions with enable_if
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Selecting branches at compile time with constexpr if
- Getting ready
- How to do it...
- How it works...
- See also
- Providing metadata to the compiler with attributes
- How to do it...
- How it works...
- See also
- Conditionally compiling your source code
- Chapter 5: Standard Library Containers, Algorithms, and Iterators
- Using vector as a default container
- Getting ready
- How to do it...
- How it works...
- See also
- Using bitset for fixed-size sequences of bits
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Using vector
for variable-size sequences of bits - Getting ready...
- How to do it...
- How it works...
- There's more...
- See also
- Using the bit manipulation utilities
- Getting ready
- How to do it…
- How it works…
- See also
- Finding elements in a range
- Getting ready
- How to do it...
- How it works...
- See also
- Sorting a range
- Getting ready
- How to do it...
- How it works...
- See also
- Initializing a range
- Getting ready
- How to do it...
- How it works...
- See also
- Using set operations on a range
- Getting ready
- How to do it...
- How it works...
- See also
- Using iterators to insert new elements into a container
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Writing your own random-access iterator
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Container access with non-member functions
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Using vector as a default container
- Chapter 6: General-Purpose Utilities
- Expressing time intervals with chrono::duration
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Working with calendars
- Getting ready
- How to do it…
- How it works…
- There's more…
- See also
- Converting times between time zones
- Getting ready
- How to do it…
- How it works…
- See also
- Measuring function execution time with a standard clock
- Getting ready
- How to do it...
- How it works...
- See also
- Generating hash values for custom types
- Getting ready
- How to do it...
- How it works...
- See also
- Using std::any to store any value
- Getting ready
- How to do it...
- How it works...
- See also
- Using std::optional to store optional values
- Getting ready
- How to do it...
- How it works...
- See also
- Using std::variant as a type-safe union
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Visiting an std::variant
- Getting ready
- How to do it...
- How it works...
- See also
- Using std::span for contiguous sequences of objects
- Getting ready
- How to do it…
- How it works…
- See also
- Registering a function to be called when a program exits normally
- Getting ready
- How to do it...
- How it works...
- See also
- Using type traits to query properties of types
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Writing your own type traits
- Getting ready
- How to do it...
- How it works...
- See also
- Using std::conditional to choose between types
- Getting ready
- How to do it...
- How it works...
- See also
- Expressing time intervals with chrono::duration
- Chapter 7: Working with Files and Streams
- Reading and writing raw data from/to binary files
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Reading and writing objects from/to binary files
- Getting ready
- How to do it...
- How it works...
- See also
- Using localized settings for streams
- Getting ready
- How to do it...
- How it works...
- See also
- Using I/O manipulators to control the output of a stream
- Getting ready
- How to do it...
- How it works...
- See also
- Using monetary I/O manipulators
- Getting ready
- How to do it...
- How it works...
- See also
- Using time I/O manipulators
- Getting ready
- How to do it...
- How it works...
- See also
- Working with filesystem paths
- Getting ready
- How to do it...
- How it works...
- See also
- Creating, copying, and deleting files and directories
- Getting ready
- How to do it...
- How it works...
- See also
- Removing content from a file
- Getting ready
- How to do it...
- How it works...
- See also
- Checking the properties of an existing file or directory
- Getting ready
- How to do it...
- How it works...
- See also
- Enumerating the content of a directory
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Finding a file
- Getting ready
- How to do it...
- How it works...
- See also
- Reading and writing raw data from/to binary files
- Chapter 8: Leveraging Threading and Concurrency
- Working with threads
- Getting ready
- How to do it...
- How it works...
- See also
- Synchronizing access to shared data with mutexes and locks
- Getting ready
- How to do it...
- How it works...
- See also
- Avoiding using recursive mutexes
- Getting ready
- How to do it...
- How it works...
- See also
- Handling exceptions from thread functions
- Getting ready
- How to do it...
- How it works...
- See also
- Sending notifications between threads
- Getting ready
- How to do it...
- How it works...
- See also
- Using promises and futures to return values from threads
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Executing functions asynchronously
- Getting ready
- How to do it...
- How it works...
- See also
- Using atomic types
- Getting ready
- How to do it...
- How it works...
- See also
- Implementing parallel map and fold with threads
- Getting ready
- How to do it...
- How it works...
- See also
- Implementing parallel map and fold with tasks
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Implementing parallel map and fold with standard parallel algorithms
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Using joinable threads and cancellation mechanisms
- Getting ready
- How to do it...
- How it works...
- See also
- Using thread synchronization mechanisms
- Getting ready
- How to do it...
- How it works...
- See also
- Working with threads
- Chapter 9: Robustness and Performance
- Using exceptions for error handling
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Using noexcept for functions that do not throw exceptions
- How to do it...
- How it works...
- There's more...
- See also
- Ensuring constant correctness for a program
- How to do it...
- How it works...
- There's more...
- See also
- Creating compile-time constant expressions
- Getting ready
- How to do it...
- How it works...
- There's more…
- See also
- Creating immediate functions
- How to do it…
- How it works…
- See also
- Performing correct type casts
- How to do it...
- How it works...
- There's more...
- See also
- Using unique_ptr to uniquely own a memory resource
- Getting ready
- How to do it...
- How it works...
- See also
- Using shared_ptr to share a memory resource
- Getting ready
- How to do it...
- How it works...
- See also
- Implementing move semantics
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Consistent comparison with the operator <=>
- Getting ready
- How to do it…
- How it works…
- See also
- Using exceptions for error handling
- Chapter 10: Implementing Patterns and Idioms
- Avoiding repetitive if...else statements in factory patterns
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Implementing the pimpl idiom
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Implementing the named parameter idiom
- Getting ready
- How to do it...
- How it works...
- See also
- Separating interfaces and implementations with the non-virtual interface idiom
- Getting ready
- How to do it...
- How it works...
- See also
- Handling friendship with the attorney-client idiom
- Getting ready
- How to do it...
- How it works...
- See also
- Static polymorphism with the curiously recurring template pattern
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Implementing a thread-safe singleton
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Avoiding repetitive if...else statements in factory patterns
- Chapter 11: Exploring Testing Frameworks
- Getting started with Boost.Test
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Writing and invoking tests with Boost.Test
- Getting ready
- How to do it...
- How it works...
- See also
- Asserting with Boost.Test
- Getting ready
- How to do it...
- How it works...
- See also
- Using fixtures in Boost.Test
- Getting ready
- How to do it...
- How it works...
- See also
- Controlling outputs with Boost.Test
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Getting started with Google Test
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Writing and invoking tests with Google Test
- Getting ready
- How to do it...
- How it works...
- See also
- Asserting with Google Test
- How to do it...
- How it works...
- See also
- Using test fixtures with Google Test
- Getting ready
- How to do it...
- How it works...
- See also
- Controlling output with Google Test
- Getting ready
- How to do it...
- How it works...
- See also
- Getting started with Catch2
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Writing and invoking tests with Catch2
- How to do it...
- How it works...
- See also
- Asserting with Catch2
- Getting ready
- How to do it...
- How it works...
- See also
- Controlling output with Catch2
- Getting ready
- How to do it…
- How it works...
- See also
- Getting started with Boost.Test
- Chapter 12: C++20 Core Features
- Working with modules
- Getting ready
- How to do it...
- How it works...
- See also
- Understanding module partitions
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Specifying requirements on template arguments with concepts
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Using requires expressions and clauses
- Getting ready
- How to do it...
- How it works...
- See also
- Iterating over collections with the ranges library
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Creating your own range view
- Getting ready
- How to do it...
- How it works...
- See also
- Creating a coroutine task type for asynchronous computations
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Creating a coroutine generator type for sequences of values
- Getting ready
- How to do it...
- How it works...
- There's more...
- See also
- Working with modules
- Bibliography
- Websites
- Articles and books
- Other Books You May Enjoy
- Index