0% found this document useful (0 votes)
13 views

C++17 Standard Library Quick Reference, 2nd Edition: A Pocket Guide to Data Structures, Algorithms, and Functions Peter Van Weert download

The document is a reference guide for the C++17 Standard Library, detailing data structures, algorithms, and functions. It includes chapters on numerics, general utilities, containers, and more, providing essential information for C++ programming. The guide is authored by Peter Van Weert and Marc Gregoire, and is available in both paperback and electronic formats.

Uploaded by

carciuejinsu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views

C++17 Standard Library Quick Reference, 2nd Edition: A Pocket Guide to Data Structures, Algorithms, and Functions Peter Van Weert download

The document is a reference guide for the C++17 Standard Library, detailing data structures, algorithms, and functions. It includes chapters on numerics, general utilities, containers, and more, providing essential information for C++ programming. The guide is authored by Peter Van Weert and Marc Gregoire, and is available in both paperback and electronic formats.

Uploaded by

carciuejinsu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 44

C++17 Standard Library Quick Reference, 2nd

Edition: A Pocket Guide to Data Structures,


Algorithms, and Functions Peter Van Weert pdf
download
https://ebookmeta.com/product/c17-standard-library-quick-
reference-2nd-edition-a-pocket-guide-to-data-structures-
algorithms-and-functions-peter-van-weert/

Download more ebook from https://ebookmeta.com


We believe these products will be a great fit for you. Click
the link to download now, or visit ebookmeta.com
to discover even more!

C# 10 Quick Syntax Reference: A Pocket Guide to the


Language, APIs, and Library Mikael Olsson

https://ebookmeta.com/product/c-10-quick-syntax-reference-a-
pocket-guide-to-the-language-apis-and-library-mikael-olsson/

C# 8 Quick Syntax Reference, 3rd Edition: A Pocket


Guide to the Language, APIs, and Library Mikael Olsson

https://ebookmeta.com/product/c-8-quick-syntax-reference-3rd-
edition-a-pocket-guide-to-the-language-apis-and-library-mikael-
olsson/

R Quick Syntax Reference, 2nd Edition: A Pocket Guide


to the Language, APIs and Library Margot Tollefson

https://ebookmeta.com/product/r-quick-syntax-reference-2nd-
edition-a-pocket-guide-to-the-language-apis-and-library-margot-
tollefson/

The Toxicology of Essential and Nonessential Metals 1st


Edition Nichole Coleman

https://ebookmeta.com/product/the-toxicology-of-essential-and-
nonessential-metals-1st-edition-nichole-coleman/
Client consultant model services agreement 5th Edition
International Federation Of Consulting Engineers.

https://ebookmeta.com/product/client-consultant-model-services-
agreement-5th-edition-international-federation-of-consulting-
engineers/

The Story of the Western Wing Shi-Fu Wang

https://ebookmeta.com/product/the-story-of-the-western-wing-shi-
fu-wang/

Falling from Grace Downward Mobility in the Age of


Affluence Katherine S. Newman

https://ebookmeta.com/product/falling-from-grace-downward-
mobility-in-the-age-of-affluence-katherine-s-newman/

Turnover Vegas Aces The Quarterback Book 4 1st Edition


Lisa Suzanne

https://ebookmeta.com/product/turnover-vegas-aces-the-
quarterback-book-4-1st-edition-lisa-suzanne/

Pragmatics A Resource Book for Students 4th Edition


Joan Cutting Kenneth Fordyce

https://ebookmeta.com/product/pragmatics-a-resource-book-for-
students-4th-edition-joan-cutting-kenneth-fordyce/
The Anti-Oligarchy Constitution : Reconstructing the
Economic Foundations of American Democracy 1st Edition
Joseph Fishkin

https://ebookmeta.com/product/the-anti-oligarchy-constitution-
reconstructing-the-economic-foundations-of-american-
democracy-1st-edition-joseph-fishkin/
C++17 Standard
Library Quick
Reference
A Pocket Guide to Data Structures,
Algorithms, and Functions

Second Edition

Peter Van Weert
Marc Gregoire

www.allitebooks.com
C++17 Standard
Library Quick
Reference
A Pocket Guide to Data Structures,
Algorithms, and Functions

Second Edition

Peter Van Weert


Marc Gregoire

www.allitebooks.com
C++17 Standard Library Quick Reference: A Pocket Guide to Data
Structures, Algorithms, and Functions
Peter Van Weert Marc Gregoire
Kessel-Lo, Belgium Meldert, Belgium
ISBN-13 (pbk): 978-1-4842-4922-2 ISBN-13 (electronic): 978-1-4842-4923-9
https://doi.org/10.1007/978-1-4842-4923-9

Copyright © 2019 by Peter Van Weert and Marc Gregoire


This work is subject to copyright. All rights are reserved by the Publisher, whether the whole
or part of the material is concerned, specifically the rights of translation, reprinting, reuse of
illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical
way, and transmission or information storage and retrieval, electronic adaptation, computer
software, or by similar or dissimilar methodology now known or hereafter developed.
Trademarked names, logos, and images may appear in this book. Rather than use a trademark
symbol with every occurrence of a trademarked name, logo, or image we use the names, logos,
and images only in an editorial fashion and to the benefit of the trademark owner, with no inten-
tion of infringement of the trademark.
The use in this publication of trade names, trademarks, service marks, and similar terms, even if
they are not identified as such, is not to be taken as an expression of opinion as to whether or not
they are subject to proprietary rights.
While the advice and information in this book are believed to be true and accurate at the date of
publication, neither the authors nor the editors nor the publisher can accept any legal responsibil-
ity for any errors or omissions that may be made. The publisher makes no warranty, express or
implied, with respect to the material contained herein.
Managing Director, Apress Media LLC: Welmoed Spahr
Acquisitions Editor: Steve Anglin
Development Editor: Matthew Moodie
Coordinating Editor: Mark Powers
Cover designed by eStudioCalamar
Cover image designed by Freepik (www.freepik.com)
Distributed to the book trade worldwide by Springer Science+Business Media New York,
233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505,
e-mail orders-ny@springer-sbm.com, or visit www.springeronline.com. Apress Media, LLC is
a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc
(SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation.
For information on translations, please e-mail editorial@apress.com; for reprint, paperback, or
audio rights, please email bookpermissions@springernature.com.
Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook ver-
sions and licenses are also available for most titles. For more information, reference our Print and
eBook Bulk Sales web page at http://www.apress.com/bulk-sales.
Any source code or other supplementary material referenced by the author in this book is available
to readers on GitHub via the book's product page, located at www.apress.com/9781484249222.
For more detailed information, please visit http://www.apress.com/source-code.
Printed on acid-free paper

www.allitebooks.com
Dedicated to my parents and my brother,
who are always there for me.
Their support and patience helped me
in finishing this book.
—Marc Gregoire

In loving memory of Jeroen.


Your enthusiasm and courage will forever remain
an inspiration to us all.
—Peter Van Weert

www.allitebooks.com
Contents

About the Authors���������������������������������������������������������������������������� xv


About the Technical Reviewer������������������������������������������������������� xvii
Introduction������������������������������������������������������������������������������������ xix

■■  Chapter 1: Numerics and Math������������������������������������������������������ 1


Common Mathematical Functions��������������������������������������������� <cmath> 1
Basic Functions�������������������������������������������������������������������������������������������������������� 1
Exponential and Logarithmic Functions������������������������������������������������������������������� 2
Power Functions������������������������������������������������������������������������������������������������������� 2
Trigonometric and Hyperbolic Functions������������������������������������������������������������������ 3
Integral Rounding of Floating-Point Numbers���������������������������������������������������������� 3
Floating-Point Manipulation Functions��������������������������������������������������������������������� 3
Classification and Comparison Functions����������������������������������������������������������������� 4
gcd/lcm C++17 ������������������������������������������������������������������������������������� <numeric> 4
Error Handling����������������������������������������������������������������������������������������������������������� 5

Special Mathematical Functions C++17 ������������������������������������ <cmath> 5


Bessel Functions������������������������������������������������������������������������������������������������������ 6
Polynomials�������������������������������������������������������������������������������������������������������������� 7
Elliptic Integrals�������������������������������������������������������������������������������������������������������� 7
Exponential Integrals������������������������������������������������������������������������������������������������ 8
Error Functions��������������������������������������������������������������������������������������������������������� 8
Gamma Functions����������������������������������������������������������������������������������������������������� 8

www.allitebooks.com
■ Contents

Beta Functions���������������������������������������������������������������������������������������������������������� 9
Zeta Functions���������������������������������������������������������������������������������������������������������� 9
Minimum, Maximum, and Clamping����������������������������������� <algorithm> 9
Fixed-Width Integer Types���������������������������������������������������� <cstdint> 10
Arithmetic Type Properties����������������������������������������������������� <limits> 11
Complex Numbers���������������������������������������������������������������� <complex> 13
Compile-Time Rational Numbers��������������������������������������������� <ratio> 14
Random Numbers������������������������������������������������������������������ <random> 15
Random Number Generators���������������������������������������������������������������������������������� 15
Random Number Distributions������������������������������������������������������������������������������� 18

Numeric Arrays������������������������������������������������������������������� <valarray> 23


std::slice����������������������������������������������������������������������������������������������������������������� 24
std::gslice��������������������������������������������������������������������������������������������������������������� 25
std::mask_array������������������������������������������������������������������������������������������������������ 26
std::indirect_array�������������������������������������������������������������������������������������������������� 27

■■  Chapter 2: General Utilities���������������������������������������������������������� 29


Moving, Forwarding, Swapping���������������������������������������������<utility> 29
Moving�������������������������������������������������������������������������������������������������������������������� 29
Forwarding������������������������������������������������������������������������������������������������������������� 31
Swapping and Exchanging������������������������������������������������������������������������������������� 32

Pairs and Tuples������������������������������������������������������������������������������������ 33


Pairs��������������������������������������������������������������������������������������������������� <utility> 33
Tuples����������������������������������������������������������������������������������������������������� <tuple> 34

std::byte C++17 ��������������������������������������������������������������������� <cstddef> 35


Relational Operators������������������������������������������������������������� <utility> 36
Smart Pointers����������������������������������������������������������������������� <memory> 36
Exclusive Ownership Pointers�������������������������������������������������������������������������������� 36
Shared Ownership Pointers������������������������������������������������������������������������������������ 39

vi
■ Contents

Function Objects������������������������������������������������������������� <functional> 42


Reference Wrappers����������������������������������������������������������������������������������������������� 43
Predefined Functors����������������������������������������������������������������������������������������������� 43
Binding Function Arguments���������������������������������������������������������������������������������� 44
Negating a Callable C++17 ������������������������������������������������������������������������������������� 45

Generic Function Wrappers������������������������������������������������������������������������������������ 45


Functors for Class Members����������������������������������������������������������������������������������� 46

Initializer Lists������������������������������������������������������� <initializer_list> 47


Vocabulary Types C++17 ����������������������������������������������������������������������� 48

std::optional�������������������������������������������������������������������������������������� <optional> 48
std::variant������������������������������������������������������������������������������������������ <variant> 50
std::any��������������������������������������������������������������������������������������������������������<any> 55

Date and Time Utilities����������������������������������������������������������� <chrono> 56


Durations���������������������������������������������������������������������������������������������������������������� 57
Time Points������������������������������������������������������������������������������������������������������������� 58
Clocks��������������������������������������������������������������������������������������������������������������������� 59
C-Style Date and Time Utilities��������������������������������������������������������������� <ctime> 60

Type Utilities����������������������������������������������������������������������������������������� 62
Runtime Type Identification������������������������������������� <typeinfo>, <typeindex> 62
Type Traits�����������������������������������������������������������������������������������<type_traits> 63
Type Operations���������������������������������������������������������������������������������� <utility> 70

Generic Utilities������������������������������������������������������������������������������������� 71
std::invoke C++17 ������������������������������������������������������������������������� <functional> 71
std::addressof��������������������������������������������������������������������������������������� <memory> 72

vii
■ Contents

■■  Chapter 3: Containers������������������������������������������������������������������ 73


Iterators������������������������������������������������������������������������������ <iterator> 73
Iterator Tags������������������������������������������������������������������������������������������������������������ 74
Non-member Functions to Get Iterators����������������������������������������������������������������� 75
Non-member Operations on Iterators��������������������������������������������������������������������� 76
Sequential Containers��������������������������������������������������������������������������� 76
std::vector��������������������������������������������������������������������������������������������� <vector> 76
std::deque����������������������������������������������������������������������������������������������� <deque> 83
std::array������������������������������������������������������������������������������������������������ <array> 84
std::list and std::forward_list��������������������������������������<list>, <forward_list> 84
Sequential Containers Reference��������������������������������������������������������������������������� 86

std::bitset������������������������������������������������������������������������������� <bitset> 89
Complexity�������������������������������������������������������������������������������������������������������������� 90
Reference��������������������������������������������������������������������������������������������������������������� 90

Container Adaptors������������������������������������������������������������������������������� 91
std::queue����������������������������������������������������������������������������������������������� <queue> 91
std::priority_queue��������������������������������������������������������������������������������� <queue> 91
std::stack������������������������������������������������������������������������������������������������ <stack> 92
Example������������������������������������������������������������������������������������������������������������������ 92
Reference��������������������������������������������������������������������������������������������������������������� 93

Ordered Associative Containers������������������������������������������������������������ 93


std::map�������������������������������������������������������������������������������������������������������<map> 94
Inserting in a Map��������������������������������������������������������������������������������������������������� 95
std::multimap����������������������������������������������������������������������������������������������<map> 98
std::set and std::multiset�����������������������������������������������������������������������������<set> 98
Order of Elements��������������������������������������������������������������������������������������������������� 98
Searching��������������������������������������������������������������������������������������������������������������� 99
Moving Nodes Between Containers C++17 ���������������������������������������������������������� 100

Merging Containers C++17 ����������������������������������������������������������������������������������� 100

viii
■ Contents

Complexity������������������������������������������������������������������������������������������������������������ 101
Reference������������������������������������������������������������������������������������������������������������� 101

Unordered Associative Containers.......................................................


......................................................<unordered_map>, <unordered_set> 103
Hash Map�������������������������������������������������������������������������������������������������������������� 104
Template Type Parameters����������������������������������������������������������������������������������� 104
Hash Functions����������������������������������������������������������������������������������������������������� 104
Complexity������������������������������������������������������������������������������������������������������������ 106
Reference������������������������������������������������������������������������������������������������������������� 106

Allocators����������������������������������������������������������������������������� <memory> 108


Polymorphic Allocators C++17 ������������������������������������������<memory_resource> 108
Allocators for Multilevel Containers��������������������������������<scoped_allocator> 111

■■  Chapter 4: Algorithms���������������������������������������������������������������� 113


Input and Output Iterators������������������������������������������������������������������� 113
General Guidelines������������������������������������������������������������������������������ 114
Algorithm Arguments�������������������������������������������������������������������������������������������� 114

Terminology���������������������������������������������������������������������������������������� 115
Algorithms���������������������������������������������������������������������� <algorithm> 115
Applying a Function to a Range���������������������������������������������������������������������������� 115
Checking for the Presence of Elements���������������������������������������������������������������� 117
Finding Elements�������������������������������������������������������������������������������������������������� 117
Finding Min/Max Elements����������������������������������������������������������������������������������� 118
Binary Search������������������������������������������������������������������������������������������������������� 119
Subsequence Search�������������������������������������������������������������������������������������������� 120
Sequence Comparison������������������������������������������������������������������������������������������ 121
Generating Sequences������������������������������������������������������������������������������������������ 122
Copy, Move, Swap������������������������������������������������������������������������������������������������� 123
Removing and Replacing�������������������������������������������������������������������������������������� 124
Reversing and Rotating���������������������������������������������������������������������������������������� 125

ix
■ Contents

Partitioning����������������������������������������������������������������������������������������������������������� 126
Sorting������������������������������������������������������������������������������������������������������������������ 127
Sampling and Shuffling���������������������������������������������������������������������������������������� 128
Operations on Sorted Ranges������������������������������������������������������������������������������� 129
Permutation���������������������������������������������������������������������������������������������������������� 130
Heaps�������������������������������������������������������������������������������������������������������������������� 131

Numeric Algorithms������������������������������������������������������������<numeric> 132


Reductions������������������������������������������������������������������������������������������������������������ 132
Inner Products������������������������������������������������������������������������������������������������������ 133
Prefix Sums���������������������������������������������������������������������������������������������������������� 134
Element Differences��������������������������������������������������������������������������������������������� 135

Algorithms for Uninitialized Memory����������������������������������� <memory> 135


Parallel Algorithms C++17 ���������������������������������������������� <execution> 136
Parallel Execution������������������������������������������������������������������������������������������������� 137
Parallel Unsequenced Execution�������������������������������������������������������������������������� 138

Iterator Adaptors��������������������������������������������������������������� <iterator> 138


■■  Chapter 5: Input/Output������������������������������������������������������������� 141
Input/Output with Streams����������������������������������������������������������������� 141
Helper Types����������������������������������������������������������������������������������������������<ios> 142
Formatting Methods (std::ios_base)����������������������������������������������������������<ios> 143
I/O Manipulators������������������������������������������������������������������� <ios>, <iomanip> 145
Example���������������������������������������������������������������������������������������������������������������� 146
std::ios�������������������������������������������������������������������������������������������������������<ios> 147
std::ostream������������������������������������������������������������������������������������� <ostream> 149
std::istream�������������������������������������������������������������������������������������� <istream> 151
std::iostream������������������������������������������������������������������������������������� <istream> 153

x
■ Contents

String Streams��������������������������������������������������������������������<sstream> 153


Example���������������������������������������������������������������������������������������������������������������� 154

File Streams������������������������������������������������������������������������<fstream> 155


Example���������������������������������������������������������������������������������������������������������������� 156

Streaming Custom Types�������������������������������������������������������������������� 156


Custom << and >> Operators������������������������������������������������������������������������������ 156
Custom I/O Manipulators������������������������������������������������������������������������� <ios> 157

Stream Iterators���������������������������������������������������������������� <iterator> 160


std::ostream_iterator�������������������������������������������������������������������������������������������� 160
std::istream_iterator��������������������������������������������������������������������������������������������� 160

Stream Buffers���������������������������������������������������������������� <streambuf> 161


File Systems������������������������������������������������������������������� <filesystem> 162
Files, Paths, and Pathnames��������������������������������������������������������������������������������� 162
Error Reporting����������������������������������������������������������������������������������������������������� 163
The path Class������������������������������������������������������������������������������������������������������ 164
File Links�������������������������������������������������������������������������������������������������������������� 168
Path Normalization����������������������������������������������������������������������������������������������� 169
The Current Working Directory����������������������������������������������������������������������������� 170
Absolute and Relative Paths��������������������������������������������������������������������������������� 170
Comparing Paths�������������������������������������������������������������������������������������������������� 172
File Status������������������������������������������������������������������������������������������������������������� 172
Creating, Copying, Deleting, and Renaming���������������������������������������������������������� 176
File Sizes and Free Space������������������������������������������������������������������������������������ 177
Directory Listing��������������������������������������������������������������������������������������������������� 178

C-Style File Utilities������������������������������������������������������������� <cstdio> 180


C-Style Output and Input����������������������������������������������������� <cstdio> 181
std::printf() Family������������������������������������������������������������������������������������������������ 181
std::scanf() Family������������������������������������������������������������������������������������������������ 185

xi
■ Contents

■■  Chapter 6: Characters and Strings��������������������������������������������� 189


Strings��������������������������������������������������������������������������������� <string> 189
Searching in Strings��������������������������������������������������������������������������������������������� 190
Modifying Strings������������������������������������������������������������������������������������������������� 191
Constructing Strings��������������������������������������������������������������������������������������������� 192
String Length�������������������������������������������������������������������������������������������������������� 192
Copying (Sub)Strings�������������������������������������������������������������������������������������������� 193
Comparing Strings������������������������������������������������������������������������������������������������ 193

String Views C++17 ����������������������������������������������������� <string_view> 194


Character Classification�������������������������������������� <cctype>, <cwctype> 195
Character-Encoding Conversion������������������������� <locale>, <codecvt> 197
Localization�������������������������������������������������������������������������� <locale> 200
Locale Names������������������������������������������������������������������������������������������������������� 200
The Global Locale������������������������������������������������������������������������������������������������� 201
Basic std::locale Members����������������������������������������������������������������������������������� 202
Locale Facets�������������������������������������������������������������������������������������������������������� 202
Combining and Customizing Locales�������������������������������������������������������������������� 210
C Locales������������������������������������������������������������������������������������������ <clocale> 213

Regular Expressions�������������������������������������������������������������� <regex> 214


The ECMAScript Regular Expression Grammar���������������������������������������������������� 214
Regular Expression Objects���������������������������������������������������������������������������������� 216
Matching and Searching Patterns������������������������������������������������������������������������ 218
Match Iterators����������������������������������������������������������������������������������������������������� 221
Replacing Patterns����������������������������������������������������������������������������������������������� 223

Numeric Conversions�������������������������������������������������������������������������� 226


Convenient Conversion Functions������������������������������������������������������ <string> 227
High-Performance Conversion Functions C++17 ���������������������������� <charconv> 229

xii
■ Contents

■■  Chapter 7: Concurrency������������������������������������������������������������� 231


Threads�������������������������������������������������������������������������������� <thread> 231
Launching a New Thread�������������������������������������������������������������������������������������� 231
A Thread’s Lifetime����������������������������������������������������������������������������������������������� 232
Thread Identifiers������������������������������������������������������������������������������������������������� 232
Utility Functions���������������������������������������������������������������������������������������������������� 233
Exceptions������������������������������������������������������������������������������������������������������������ 233

Futures��������������������������������������������������������������������������������� <future> 234


Return Objects������������������������������������������������������������������������������������������������������ 234
Providers�������������������������������������������������������������������������������������������������������������� 235
Exceptions������������������������������������������������������������������������������������������������������������ 237

Mutual Exclusion������������������������������������������������������������������� <mutex> 238


Mutexes and Locks����������������������������������������������������������������������������������������������� 238
Mutex Types���������������������������������������������������������������������������������������������������������� 239
Lock Types������������������������������������������������������������������������������������������������������������ 241
Locking Multiple Mutexes������������������������������������������������������������������������������������� 244
Exceptions������������������������������������������������������������������������������������������������������������ 244

Calling a Function Once��������������������������������������������������������� <mutex> 245


Condition Variables������������������������������������������<condition_variable> 246
Waiting for a Condition����������������������������������������������������������������������������������������� 246
Notification����������������������������������������������������������������������������������������������������������� 247
Exceptions������������������������������������������������������������������������������������������������������������ 248

L1 Data Cache Line Size C++17 �������������������������������������������������<new> 248


Synchronization���������������������������������������������������������������������������������� 249
Atomic Operations��������������������������������������������������������������� <atomic> 250
Atomic Variables��������������������������������������������������������������������������������������������������� 250
Atomic Flags��������������������������������������������������������������������������������������������������������� 255
Non-member Functions and Macros�������������������������������������������������������������������� 255
Fences������������������������������������������������������������������������������������������������������������������ 255

xiii
■ Contents

■■  Chapter 8: Diagnostics��������������������������������������������������������������� 257


Assertions���������������������������������������������������������������������������<cassert> 257
Exceptions������������������������������������������������� <exception>, <stdexcept> 258
Exception Pointers���������������������������������������������������������� <exception> 259
Nested Exceptions���������������������������������������������������������� <exception> 260
System Errors������������������������������������������������������������ <system_error> 262
std::error_category����������������������������������������������������������������������������������������������� 263
std::error_code����������������������������������������������������������������������������������������������������� 263
std::error_condition���������������������������������������������������������������������������������������������� 264

C Error Numbers�������������������������������������������������������������������<cerrno> 264


Failure Handling�������������������������������������������������������������� <exception> 265
std::uncaught_exceptions() C++17 ����������������������������������������������������������������������� 265

std::terminate()����������������������������������������������������������������������������������������������������� 266

■■  Appendix: Standard Library Headers����������������������������������������� 271


Numerics and Math (Chapter 1)���������������������������������������������������������������������������� 271
General Utilities (Chapter 2)���������������������������������������������������������������������������������� 272
Containers (Chapter 3)������������������������������������������������������������������������������������������ 273
Algorithms (Chapter 4)������������������������������������������������������������������������������������������ 274
Input/Output (Chapter 5)��������������������������������������������������������������������������������������� 274
Characters and Strings (Chapter 6)���������������������������������������������������������������������� 275
Concurrency (Chapter 7)��������������������������������������������������������������������������������������� 276
Diagnostics (Chapter 8)���������������������������������������������������������������������������������������� 277
The C Standard Library����������������������������������������������������������������������������������������� 277

Index���������������������������������������������������������������������������������������������� 279

xiv
About the Authors

Peter Van Weert is a Belgian software engineer and


C++ expert, mainly experienced in large-scale desktop
application development. He is passionate about
coding, algorithms, and data structures.
Peter received his master of science in computer
science summa cum laude with congratulations of the
Board of Examiners from the University of Leuven. In
2010, he completed his PhD thesis in Leuven at the
research group for declarative languages and artificial
intelligence. During his doctoral studies, he was a
teaching assistant for courses on software analysis
and design, object-oriented programming (Java), and
declarative programming (Prolog and Haskell).
After graduating, Peter joined Nikon Metrology to work on industrial metrology
software for high-precision 3D laser scanning and point cloud–based inspection. At
Nikon, he learned to handle large C++ code bases and gained further proficiency in all
aspects of the software development process—skills that serve him well today at Medicim,
the software R&D center for dental companies Nobel Biocare, Ormco, and KaVo Kerr.
At Medicim, Peter contributes to their next-generation digital platform for dentists,
orthodontists, and oral surgeons that offers patient data acquisition from a wide range of
hardware, diagnostic functionality, implant planning, and prosthetic design.
In his spare time, Peter writes books on C++ and is a regular speaker at and board
member of the Belgian C++ Users Group.

Marc Gregoire is a software architect from Belgium.


He graduated from the University of Leuven, Belgium,
with a degree in “Burgerlijk ingenieur in de computer
wetenschappen” (equivalent to a master of science in
engineering in computer science). The year after, he
received an advanced master’s degree in artificial
intelligence, cum laude, at the same university. After
his studies, Marc started working for a software
consultancy company called Ordina Belgium. As a
consultant, he worked for Siemens and Nokia Siemens
Networks on critical 2G and 3G software running on
Solaris for telecom operators. This required working in
international teams stretching from South America and
the United States to Europe, the Middle East, Africa,
and Asia. Now, Marc is a software architect at Nikon

xv
Another Random Scribd Document
with Unrelated Content
Gyere, temessük el ebbe az üres verembe.
A vajda meggyőződött róla, hogy csakugyan nem az ördög az, a
ki a nyakára vetette magát.
Akkor aztán rendén elhantolták azt a pihenni vágyó embert abba
a csendes ágyba, a miből a Czafrinkát kivették.
A kiemelt vasládát Jónás felkötötte a lova hátára a nyereg mögé.
A vajda nagyot fohászkodott a bevégzett munka után.
– Soha életemben sem kivánkozom többet az akasztófához!
A zivatar elvonúlt dörögve. Ott hagyott maga után egy télmezőt.
A messze síkság fehérlett a jégtől, a miben csülökig gázoltak a lovak.
Ha most a karámokban, a cserények mögül kidugta a fejét a
pásztorember, a csikós, a gulyás s meglátta azt a két fekete alakot
végig ügetni lóháton a jégtől fehér mezőn, az ugyan szentül
megesküdhetett rá, hogy az ördögök jártak ott, ellopni az
akasztófáról a maguk keresztfiát.

Ugyanazon erdőn, bozóton, mocsáron keresztül, a melyen idáig


jött, vissza is törtetett Jónás egész Botsinkáig, anélkül, hogy
útközben emberi teremtéssel találkozott volna, a czigányok ki nem
beszélik azt.
Szaffi már kétségbe volt esve, el nem tudta képzelni, hova lett az
ura.
Jónás összeázottan, sárosan, tépetten, arcza, keze tele
töviskarmolástól lépett be hozzája.
– Tudod-e, hol jártam? ott voltam, a hol a te felásatlan kincseid
vannak rejtve. Felvertem: elhoztam.
Azzal elővette a felleghajtója alól azt a vasládát, s letette az
asztalra.
Szaffi vad sikoltással veté magát a ládára s két gyönge karjával
kebléhez szorítva, nyögé fuldokolva: «óh anyám! Te drága, kedves
anyám!» s azt a rozsdás vasat nem sajnálta csókjaival tetézni.
– Ez volt-e a kincsed, a mi után sóhajtoztál? kérdé tőle Jónás.
Szaffi szavak helyett csak a szemeivel tudott válaszolni, de
azokban annyi hála, imádat, szerelem volt; annyi boldogság, üdv,
megdicsőülés sugárzott ki belőlük, hogy három versíró nem tudná
azt mind elmondani.
– Most hát boldog vagy már? kérdé tőle Jónás, az ölébe vonva.
– Az vagyok. Az lettem. Csak még egy kicsiny kis óhajtásom van
hátra, ha azt is betöltenéd? ugy-e hogy megteszed? ugy-e hogy nem
tagadod meg?
S olyan hizelkedve czirogatta össze Jónásnak az arczát, hogy az
egész engedelmessé lágyulva mondá neki:
– Ugyan mit kérhetnél te én tőlem, a mit én te tőled meg tudnék
tagadni?
– Hát csak azt az egyet, hogy engedd meg nekem, hadd tegyem
én el azt az én feltalált kincsemet olyan helyre, a hol az ilyen kincsek
állnak. Neked van egy nagy pompás családi sirboltod, a hol fényes
nevű ősapád, anyád nyugosznak, faragott márványkövek alatt.
Engedd meg, hogy hadd rejthessem el én is oda, a kit úgy
szerettem, a szegény czigányasszonyt: a máglyán megégetett,
elátkozott boszorkányt, de a ki nekem édes szülőm volt. Nem tudja
azt meg senki, úgy elrejtem ottan. Nem csufolnak ki érte; nem
pironkodol miatta. Csak én magam fogom tudni nyugvó helyét.
Szentelt viz sem éri, csak az én könnyeim, elrejtett koporsóját. –
Engedj ennek az én alázatos könyörgésemnek.
Jónás pedig mogorva ránczokba szedte a homlokát s azt mondá
Szaffinak:
– Nem én! Bizony nem engedem ezt meg! Hogy nekem lopva
odarejtsed az én fényes őseim közé az elitélt boszorkányt. Az
érdemeikkel dicsekvő, aranyos nevekkel kérkedő márvány síremlékek
közé egy névtelen puszta követ be nem hagyok állítani, a minek a
háta mögé szégyen, gyalázat van rejtve. – Hanem azt kivánom, hogy
ezek a hamvak, a miket te kincseidnek neveztél, meg legyenek
tisztítva az igazságtalan itélet szennyétől; arról a névről, a mihez te
azt a szót kötöd: «édes anyám», a szenny le legyen mosva. Igen, azt
kivánom, hogy fényes gyászkiséret mellett, fáklyákkal, czímerekkel,
halotti zsolozsmák éneklése alatt szállítsák e hamvakat a megszentelt
sírba, s fehér márvány-kő álljon a fölött, arany betűkkel, a mik azt
hirdessék, hogy a legjobb anya nyugszik ott a fényes ősök sorában.
Ezt fogom megtenni.
Szaffi azt hitte, hogy most repülnek az égbe mind a ketten.
– De hogy tudod te ezt megtenni? kérdezé remegve a kéjtől, a
gyönyörtől.
– Az az én dolgom lesz. Rögtön hozzá kezdek. Lehet, hogy egy
évig nem látsz; de híremet majd hallod; s mikor újra meglátsz, az
történik meg, a mit mondtam. – Addig ápold kis gyermekeinket.
FIAT VOLUNTAS TUA.
(Legyen meg a te akaratod.)
Soha jobbkor nem érkezhetett volna az a Botsinkay által küldött
pénz a császárvárosba. Mária Terézia minden oldalról ellenségtől
körülvéve, hadsereg nélkül, pénz nélkül állt annyi hatalmasokkal
szemben. Burkus, bajor, franczia, spanyol, olasz, muszka mind
összeröffent ellene.
A magyar karok és rendek ugyan nagy lelkesülten kiálták, hogy
«vitam et sangvinem!» de hozzátették, hogy «sed avenam non…»2)
A lelkesedést tett követte, hadseregek támadtak elő a földből, s ime
ugyanakkor a hadviseléshez való pénz is támad elő a földből.
Ez új fordulatot adott a veszve hitt ügynek; a vereségre diadalok
következtek, a magyar csapatok Potsdamig száguldoztak, a királyné
trónja meg lett mentve. Jutalmak osztogattattak.
Tudta ám azt jól Botsinkay Jónás, hogy őt a háta mögött minden
ember «czigány-báró»-nak nevezi.
Volt valami jussa hozzá.
Olyan barna volt a képe, mint azoknak a szép
czigánylegényeknek, a kiknek az arczszinét mi sápadt európaiak úgy
irigyelhetjük; azonfelül is mindig szeretett a czigányok közt lakni.
(Hát még ha azt megtudnák, hogy czigányleány a felesége.)
«Czigány!»
Senki sem szereti, ha úgy híják. Senkinek sem tetszik ehhez a
nemzetiséghez tartozni. A szegény czigányt lenézi még a paraszt is.
A mely munka olyan utálatos, hogy senkinek sem kell, azt a
czigányra bizzák; más munkához még közel sem eresztik, azt
mondják: «nem szereti czigány a szántást». Kergetik egyik falu
végiről a másikra, mert azt hiszik, hogy lop, csal, s boszorkányokkal
czimboráz. Ha ütik, nem szabad neki jajgatni, mert ha jajgat, akkor
kinevetik.
Hát még «czigány-báró»-nak neveztetni!
A czigány utolsó a parasztok között, a báró pedig utolsó az urak
között. (Minthogy «a bárónál kezdődik az ember», annálfogva
felülről lefelé ő nála is végződik.)
Minthogy pedig Jónás ezt a titulust le nem koptathatta magáról,
azt gondolta ki, hogy ő azt fényesre fogja kicsiszolni. Kivívja a
becsületét a czigány névnek – csak azért is.
Azt tette, hogy az új telepből összeszedett százötven
czigánylegényt a javából, a kik legjobban meg tudták ülni a lovat
szőrén: azoknak csináltatott zöld dolmányt, veres nadrágot, fehér
csákót; felfegyverezte őket huszárok módjára. Aztán maga állt a
svadrony élére, úgy vezette fel őket a nemesi táborba.
Ezzel is megjárta, mert a mint bemutatta a csapatját a büszke
generálisnak, az ezzel a szóval pipázta le:
– Itt most nincs foltozni való vasfazék.
Azzal hátra küldték őket a bagázsiás szekerek mögé, s
komiszárust rendeltek melléjük, a ki a tiz körmükre vigyázzon.
Jónás abban az egyben csakugyan czigány természetű volt, hogy
a gorombaságért nem szokott soha felpattanni: eltette, mint a
vaczkort, csepü közé, a míg megpuhul. Más úrfi az ilyenért bizony
kihítta volna egy szál kardra a generálist.
Ő várt a maga sorára. Majd eljön az!
Csak egyszer nagy ütközet legyen!
Az is megjött.
Nem azért kivánta pedig ezt olyan nagyon Botsinkay Jónás,
mintha feltett szándéka lett volna a csata napján kivont karddal az
öklében csodadolgokat hajtani végre a maga fekete serege élén. A
czigány csak olyankor verekszik, ha nagyon megszorítják s nincs más
menekülés, akkor aztán megmutatja, hogy mit tud?
Pedig milyen szép lett volna ez a következő mondás az ütközet
után:
«Eddig feketék voltunk a naptól, most fehérek lettünk a burkus
vértől!»
Ez bizony mondatlan maradt, – Botsinkay czigány dandárja össze
sem mérte a kardját az ellenséggel. Hanem azért tett annál sokkal
nagyobb szolgálatot a hadseregnek. A burkusok tönkrezúzták az
ütközetben a császári seregnek hatvannégy ágyúját. Botsinkay
czigányjai aztán neki gyűrkőztek, s másnapra valamennyi összetört
ágyúszekereket és talpat ismét összekovácsolták; az invalidus
ágyukat megint ki lehetett állítani a csatatérre.
– Hát van-e már foltozni való vasfazék? kérdezé e hasznos műtét
után Botsinkay a gúnyolódó generálistól. Ez volt az ő boszúállása.
A generális aztán nagyon megdicsérte ezért a jó szolgálatért, s a
csapatjának hivatalos czímet adott: «tábori kovács dandár»-nak
nevezte. Jónást pedig megtette «főstrázsamesternek» ennél a
csapatnál.
Hű szolgálataiért hivatalosan is czigánybáró lett a neve.
Nem csinálhatott olyan jó dolgot, nem érhette olyan kitüntetés,
hogy ezt a gúnynevet még az is mind jobban bele ne tetovirozza a
bőrébe.
S nem haragudott érte!
Eszébe jutott Szaffi odahaza, – meg az a két kormos purdé!
Látnátok csak azt a két pár nagy fekete szemet, a milyen nincs
senkinek a világon, csak a czigány gyerekeknek!
Csakhogy ezeket nem volt szabad mutogatni.
Botsinkay Jónás egy szép napon meghivást kapott Bécsbe.
Rögtön felutazott; egész úri pompával, négylovas hintóban, czifra
kisérettel. Már akkor a helyreállított uradalma is olyan nagy
jövedelmet hajtott, hogy nem kellett szégyenkednie semmi
mágnások előtt.
A királynő nagy kitüntetéssel fogadta őt Bécsben, s ennélfogva az
udvarnál egyszerre kedves emberré lett; kiváltképen mivelhogy
mindenki azt hitte róla, hogy ő még nőtlen legény. És ő nem merte
megvallani senkinek, hogy feleséget hagyott otthon, a czigány
Szaffit.
A királynő csakhamar bárói czímmel ruházta őt fel és ezredesi
ranggal, annál a huszárcsapatnál, a melyet Jónás saját költségén
szerelt fel, s a melynek az élén aztán egy kis hadi csete-patéban is
résztvett s ott elég vitézül viselte magát.
Hanem, valljuk meg az igazat hogy nem érezte ő magát jól sem
az udvari fény közepett, sem a dicsőség mezején. Mással volt tele a
szíve.
Megjött már a báróság is, a mikor épen nem is cserkészett rá, de
mikor már a vállán hordta, akkor tapasztalá, hogy de még csak egy
csizmasarokkal se lett magasabb tőle, mint azelőtt volt. Minden
dicsőségnél többet ér az a kis csendes szoba ott a botsinkai
kastélyban, a hol a Szaffi varrja a kis fiúknak a tarka ingecskéket.
(Már akkor valának ketten.) Csakhogy ezt nem merte ám senkinek
elmondani.
Az első békekötés örömére nagy ünnepélyt rendeztek az
udvarnál, hivatalosak voltak arra a legújabb nemesi méltóságra
emelt magyar családok is. A bájos királyasszony udvarához vonta a
nemzet előkelőit, a mi csak szépségben, vitézségben és
gazdagságban sok közül kiválik. – Az ilyen udvari bálokból Jónásnak
sem lehetett kimaradni. Hisz a mi a tánczot illeti, akármifélét csak
egyszer kellett neki látni, hogy azt eltanulja, nem csak ilyen
tánczokat tanult ő, hanem hegyével fölfelé állított kardok között, égő
gyertyával a feje tetején. Biz a legújabb franczia kontratáncz sem
került neki nagy fejtörésbe.
De azért mégis megtörtént vele az a szégyen, hogy az udvari
bálban, a hol neki is részt kellett venni a colonneban úgy
elbámészkodott, hogy minden figurát elrontott; s a tánczosnéját
olyan méregbe hozta, hogy az utoljára a legyezőjével a vállára
csapott s megdorgálta, hogy mit ügyetlenkedik.
Pedig hát teljes oka volt Jónásnak az elmélázásra; mert az
átellenes párnak a szebbik fele meglepően hasonlított az ő egykori
imádottjához, Arzéna kisasszonyhoz. Csakhogy ez a módi viselet,
meg az arczfesték, a puderezett hajépítmény, a szépség-flastromok
némi idegenséget kölcsönöztek a megjelenésének. Aztán nem is
nevetett, mikor ő rá nézett, hideg, feszes maradt. De azért mégis ő
volt az valósággal, ezekbe a szemekbe de sokat nézett Jónás úrfi,
mikor még csak úrfi volt! Ezek a párduczszemek!
S aztán folyvást egy gondolat háborgatta: az a bolond ötlet, hogy
mi lenne belőle, ha ő most csak egyszerre a tenyerére vetné magát s
a sarkantyús csizmáival az ég felé sasirozna szemközt az eléje
kontrázó szép kisértetnek. Majd az ördög vitte el a nagy kivánságtól,
hogy ezt megcselekedje. Egészen bele is izzadt ebbe a
kontratánczba.
A mint annak vége volt: valaki hátulról a vállára üt, s «báró
úrnak» szólítja.
Jónás báró az ő régi kedves barátját, Feuerstein bárót látja maga
előtt.
– Ah! hát te «is» itt vagy! mondja neki.
– Barátom, én itt itthon vagyok, subsummál gyöngén Feuerstein;
én a királynőnél udvari kamarás vagyok.
Nem is úgy értette Jónás, hanem: hogy «te is itt vagy, a hol
Arzéna kisasszony»!
– Hát a báróné is itt van?
– Nem. Az otthon maradt. De ne beszélj te az én bárónémról;
hanem a magadéról.
– A magaméról? (Jónás megszeppent, no most mindjárt kipattan
a Szaffival kötött titka.)
– Igen. Ő felsége maga rendezte úgy, hogy a kontratánczban te
szemközt kerülj a szép Arzénával s gyönyörködött a bekövetkezett
sikerben, a mit a te furcsa zavarodba jöveteled elárult. Ő felsége már
értesülve van felőle, hogy te megkérted Arzéna kisasszony kezét; az
ő kegyessége elhárított minden akadályt, a mi közöttetek állt:
Loncsár uramat magyar nemessé tette, tégedet báróvá.
Hej, de hosszúra nőtt Jónás úrfinak a bárói ábrázatja erre az
örvendetes tudósításra.
Nem szólt semmit, csak a kedves barátjának a kezét szorongatta.
– De ne törd össze a kezemet csupa háládatosságból. Hiszen
igaz, hogy én voltam a legmelegebb szószóló melletted a királynőnél.
Tudta ezt Jónás bég nagyon jól. Annak a galamb vitte levélnek
minden szavára jól emlékezett.
(«Köszönöm a grácziát! mondogatá magában. Bárói koronát már
kaptam, hét ággal, ha Arzénát elveszem, még két szarvat kapok
hozzá: grófi korona lesz belőle; nem, ilyen könnyen nem akarok
gróffá lenni!)
Hogy húzza ki most a lábát ebből a kelepczéből?
Hiszen hogy Arzéna kezét megkérte, az igaz. Arról a levélről
pedig, a mit a galambbal együtt elfogott, nem beszélhet; mert azért
kikorbácsolják. Legjobb volna felfedezni, hogy már van felesége; de
a természetes esze azt súgta neki, hogy ezzel még ne álljon elő.
Kivel közölje itt a szorongattatást? Teljes életében mindig azt
látta, tapasztalta, hogy a magas uraságokban nem jó bízni.
Szerencséje, hogy jó adag bolondság volt a fejében. A királynénak
pedig volt egy kedvencz udvari bolondja. (Valamikor magyar
kálvinista diák volt.) Botsinkay ezt a másik bolondot választotta ki
kebelbarátjának, annak tárta fel minden titkát az otthon hagyott
feleségről.
– Jaj komám, ez nagy baj neked, mondá a királynő bolondja.
Tudod, hogy itt az udvarnál sokat adnak a jó erkölcsre. A te
házasságod vad házasság; mert az egyházi kánonok ellen köttetett,
tanúk nélkül, kihirdetés nélkül. Az ilyent a mi királynőnk szigorúan
bünteti. Van Bécsben egy rettenetes törvényszék, a minek
«szűzességi tribunál» a neve. Ez tartozik evidentiában tartani
minden alattvalónak az erkölcseit, de különösen a nemesekét és
főtisztekét, s jaj annak, a kit ez hibában talál. Ebben az egy
vétségben a királyné nem kegyelmez meg senkinek. – A mely
asszonyféle a férjének nem törvényes felesége, az elveszett erre a
világra nézve. Van Bécsben egy nagy javító börtön, a hová az ilyen
állapotban talált asszonyokat bezáratják, s nem hiszem, hogy olyan
tele volna ez a börtön, hogy a te Szaffid is el ne férne még benne.
Téged pedig, ha ez kitudódik, száműznek az udvartól, megfosztanak
rangodtól, czímedtől, még a birtokod is utána mehet. Nagy
bolondság ez, hallod-e! Hanem hát a bolondságot csak bolondsággal
lehet helyrehozni. Holnap nagy ebéd lesz az udvarnál, a melyre te is
hivatalos vagy. Ebéd után tartsd magad a királyné közelében, s aztán
a többit majd bizd rám. Te csak tedd magadat mentül ostobábbnak.
– No az nekem nem nagy megerőtetésbe fog kerülni.
Másnap az udvari ebéd végeztével, az áhitatos királynő rendelete
szerint az egész vendégseregnek asztalbontás után el kellett
mondani fenhangon a miatyánkot latinul.
Az udvari bolond ott állt Jónás háta mögött. Egyszer csak
elkaczagja magát az imádság között.
Az ima végeztével a királynő haraggal kérdé a bohócztól:
– Mit nevetett kend az ima közben?
– De már hogy ne nevettem volna, felséges asszonyom, mikor ez
a czigánybáró a helyett, hogy «fiat voluntas tua» azt imádkozza,
hogy «fiet voluptas sua» (meglesz az ő gyönyörűsége).
Jónás elég ostoba képet csinált hozzá, hogy most már mindenki
nevessen rajta. Csak a királynő nem. Ő nem szerette, hogy a szent
dolgok felett tréfálózzanak.
– De hát tanulja meg a helyes mondatot! Fiat voluntas tua!
– Megtanulja biz ez, a jámbor; ha fölirod neki kegyesen erre a
papirosra.
A bohócz egy összehajtott papirt tett a királynő elé az asztalra,
készen tartva az iralt is hozzá.
Miért ne tette volna meg neki azt a királynő; oda irta neki szép
férfias gömbölyű betűkkel: «fiat voluntas tua».
– De már a nevedet is rajzold alá, hadd idvezüljön tőle az a vad
pogány.
A királynő jó kedvében volt: jó hírek jöttek Angliából; ezt is
megtette a bolondja kértére.
– No most erre két heti időhaladékot kérek! mondá a bohócz; az
alatt, a fejemet teszem egy fületlen gomb ellen, hogy betanítom
annak a vad bárónak ezt a hosszú mondást.
Az egész udvar nevetett szegény czigánybáró rovására.
Mikor pedig különvehették egymást, akkor a bohócz kitárta azt az
összehajtott papirost s megmagyarázta Jónásnak, hogy mi van
annak a belsejébe írva. Az ő folyamodása volt az a királynőhöz, a
miben először is az van kérve, hogy a királynő őtet és Szaffit a
tudatlanságból eredt vétség terhe alól kegyesen oldja fel; másodszor,
hogy engedje meg neki a törvényes egybekelést gyermekei anyjával,
Szaffival, a kinek egyéb neve nem ismertetik, és harmadszor, hogy a
püspökség tegye deficientiába a botsinkai papot, s rendeljen helyébe
más plébánost.
Ezt az instantiát szentesíté a királynő a hátlapra írt nevével és a
«fiat voluntas tuá»-val.
– Már most ezzel vágtass haza Botsinkára s addig vissza ne jöjj,
míg feleségeddel együtt nem hivat a királynő.
Jónás báró nyargalt haza lóhalálában s vitte a királynő jóváhagyó
levelét püspökhöz, kormányzóhoz. Semmi kifogás nem lehetett
ellene.
Hanem mikor Szaffinak is elmondá a dolgot, őszintén bevallva az
egész csalfaságot, akkor a nő a lábaihoz borult s zokogva
könyörgött: «Ne tedd ezt jó uram! Nem szabad a koronás királynővel
neked tréfát űznöd. Nagy baj támad ebből. Hagyj engem világgá
menni a két porontyommal, mintsem én miattam veszélyt vonj
magadra. Vedd el a szép úrnőt, a kit a királynő neked szánt jegyesül,
ne gondolj én reám. Nagy a világ, elférek én benne; ha esem, nem
esem nagyot; de ha te elesel, az ország veszít vele. Ez az egész
vidék mind árvaságra jut.
De Jónás felemelte Szaffit a földről keblére: «és ha akkorát
esném is, hogy a fejemmel a Tátrát ütném meg, s a sarkammal a
Vellebit hegyet: még sem hagynálak tőlem elszakíttatni soha téged.
Inkább vegyék el minden rangomat, kincsemet, birtokomat;
kergessenek világgá: készebb vagyok veled együtt futni, czigány-
sátor alatt lakni; kötélen tánczolással, bukfenczezéssel keresni a
kenyeremet, a hogy nevelő apám kereste. Ha egyéb nem maradt
rám a koldusoktól, az az egy rám maradt, hogy egymást el nem
hagyják!»
Erre a szóra aztán Szaffi büszkén felemelte a fejét; arcza egészen
átváltozott: olyan lett, mint egy fejedelemasszony.
– Akkor tehát vezess az oltárhoz. Megtudod, hogy nem
érdemetlenre vesztegettél ennyi hű szerelmet!
Botsinkai Jónás most már minden törvényes szertartást
megtartott, a hogy parancsolva van. A pécsi püspököt kérte fel az
esketésre.
Mikor a püspök azt kérdezte a menyasszonytól, hogy mi a neve?
mi a vallása? Szaffi szelid, csendes hangon felelt meg rá.
– Igen is, van nevem. Apám volt Szaffi Kuli khán, a tatár Ghiraiak
nemzetségéből, Mehemed, temesvári basa leányának férje. Anyám
keresztyén volt. (Isten nyugtassa meg!) a szent keresztségben Zsófia
nevet kaptam! itt vannak az irások, a mik mind ezt bizonyítják. Sok
esztendő előtt, mikor az atyám halálán volt, elmondá anyámnak ezt
a titkot, hogy hová vannak elrejtve Mehemed basa kincsei, s
elküldött bennünket Magyarországra, hogy legyünk ott, azon a
helyen, és várjunk rá, míg egyszer a Botsinkay család ivadéka
visszakerül a bujdosásból s birtokát elfoglalja: akkor közöljük vele azt
a titkot. Nem voltunk boszorkányok, nem voltunk bűvésznők; egy
titkot őriztünk. A mi azután történt: Isten akarta, hogy így történjék.
E megoldás után, természetesen, a királynő haragja is
lecsillapodott, Szaffi mint fejedelmi vér jelenhetett meg az udvarnál,
s szépségével ott is diadalt nyert.
A Botsinkay család a Bánátnak nevezett magyar Kanahánban
mind a mai napig virul és hatalmas, s tagjai grófi koronát hordanak,
a minek az ágait bizony nem a feleségeik révén, hanem a maguk
érdemeivel szerezték.
MINDEN POKLOKON
KERESZTÜL
TÖRTÉNETI REGÉNY
ELSŐ RÉSZ.

I.
Előre bocsátom, hogy ez nem valami költött mese; mert ha az
volna, vakmerőnek kellene neveznünk azt a képzeletet, a mely
ilyenre vetemedett; hanem valóságos igaz történet, melynek krónikai
vázlata kéziratban megtalálható, zsombori evangelikus lelkész
Rozsondai László úrnál, Orbán Balázs tudós történetirónk bizonysága
szerint; – az akkori korszak rajzolásához való adatok is a valóságból
vannak véve, a leghitelesebb kútfők nyomán; – és így minden
kételkedés nélkül olvashatja azt mindenki s ha némely eseményt
rendkívülinek fog benne találni, magyarázza meg neki azt a
rendkívüli idők szelleme.
Az erdélyi «királyföld» határán egy gúlaalaku hegy tetején áll
Zsombor vára; a minek a hovatartozása felett örök időktől fogva sok
vita volt. A szászok azt vitatták, hogy ő hozzájuk tartozik, mint
Kőhalomszék határvára, a székelyek szintén magukénak állították; a
vár maga is hol ide, hol amoda költözött, a szerint a mint a vár
birtokosa az erdélyi vajdával jó barátságban, vagy
ellenségeskedésben élt, de egyszer megtörtént vele az a csoda,
hogy még a szászszéknek a fővárát is elhozta magával a székely
földre: Kőhalom várát, a mit ők «Reps»-nek neveznek, a rómaiak
pedig hajdan «Romadivum-nak» hittak. Hogy ez mint történhetett
meg, az ebben a mi történetünkben érthetővé lesz téve.
Zsombor várát a tizenharmadik század második tizedében Lebée
László székely gróf birta. A székelyeknél ugyan csak «primor»-oknak
hitták az előkelő várurakat; hanem Lebée László aként jutott a
grófságához, hogy ő is egyike volt annak a száz székely testőrnek, a
kik Visegrádon a király mellett voltak, s Gertrud királyné idejében jó
dali tánczos volt: akkor kapta ezt a czímet, több más korabeli
leventékkel együtt. Gertrud királyné siralmas esete után aztán
hazajött Lebée László is Erdélybe, itt megházasodott, elvette
Homoród-Szent-Mártonról a gazdag Tompa Márton leányát, a kivel
sok világi kincset kapott; de minden kincsnél és vagyonnál drágábbat
e megbecsülhetetlen jó nőnek szivében, a kinek történetéhez
hasonlót nem egyhamar hall az ember. A nőt Máriának hitták: árva
leány volt, apja anyja korán elhalt, az öcscsét is, Annát odavette
magához a férje a várába, a hol mindenben bősége volt.
Már több mint két esztendeje volt férjnél Mária, és az ég még
mindig nem áldotta meg gyermekkel, a mi nagyon búsította.
Megkisértett mindent, a mihez az ilyen gyász esetén tisztességes nők
folyamodni szoktak; (mert valóban épen olyan gyász az, mikor
valaki, a kit nagyon szeretnének, nem születik, mint mikor valaki, a
kit nagyon szeretnek, meghal.) Szent fogadásokat tett, elment
bucsura gyalog a csodatevő Boldogasszony képhez, arany
klenodiumokat tett le az oltárra, sőt saját kezével himzett egy
oltárszőnyeget a szűz anya képével, de az mind nem használt; már a
javasasszonyokhoz is folyamodott, s ámbár annyira nem hagyta
rábeszéltetni magát, hogy bájitallal, kenőcsökkel tegyen kisérletet, a
miket tilt a jó erkölcs; de az ártatlanabb babonákat nem hagyta
megkisértetlen, a mik arra vannak kigondolva, hogy a nő mi módon
nyerje meg a maga urának igaz szeretetét. Hogy ennek annyiféle
babonája van, az mind csak azt bizonyítja, hogy mi sokat kellett a
szegény nőknek szenvedniök világteremtése óta ebben a nagy
dologban!
A szegény úrasszony e közben azzal áltatta a szivét, hogy ha
valami várbeli asszonyának volt kis gyermeke, azt vette magához,
hogy legyen a kit gyügyögtessen, a kinek a gagyogását hallja, s a kit
utána hordjanak, hogy azt hihesse valaki, az övé.
Egyszer aztán egy vajákos asszony azt mondta neki, hogy «végy
magadnak tükröt» – mivelhogy abban az időben a székely asszonyok
nem használtak tükröt, azt tartva, hogy nem jó abban nézegetni az
asszonyembernek a saját orczáját: mert a míg szép, addig csak
hivalkodóvá teszi a tükörbe tekintés, ha pedig egyszer elkezdi a
szépségét veszteni, akkor meg csak bánatot okoz neki. Azért jobb
azt nem hozni a házba. Mária most aztán kérte az urát, hogy
hozasson neki egy tükröt, a mit az szivesen meg is tett. A tükör
aztán azt mondta neki: «szép vagy! szép vagy! de még sem olyan
szép, mint az öcséd, a szép Anna.» – De még ebből nem értett
semmit.
Végre elmondta a lelki fájdalmát a gyontató atyának, hogy talán
valami bűneért látogatja ekép az Isten.
A gyóntató atya bölcs férfiú volt s azt a tanácsot adta Máriának,
hogy «add férjhez öcsédet, Annát.»
És Mária még ebből sem értette meg a titkot, a minek a
sejtelméhez hiányzott a lelkéből minden fogalom.
De azért szentirásnak vette a gyóntató atya tanácsát s rajta volt,
hogy az öcscsét, Annát minél elébb konty alá kerítse. Ne mondja
aztán a tükör, hogy «van náladnál szebb is a háznál.»
Nem is kelle pedig messze menni az alkalmas vőlegény
keresésével. Ott volt a szomszéd Kőhalom ura, gróf Henning
Brüniszkáld lovag, a ki gyakran átjárt Zsombor várba, s sólymot,
agarat hordott ajándékba Anna leányasszonynak, jó indulata jeléül.
Az nem is titkolta, hogy Annát szeretné elvenni: csak neki adnák. S a
szász gróf szép deli levente volt, sürű, világosszőke hajjal, nagy,
őszinte, szép kék szemekkel, piros, derült arczával, s bajvivó
termetével. Vitézi tornában is tört már lándzsát Anna tiszteletére s az
ő szalagját viselte a kalapja mellett. És a mellett olyan jó fiú volt,
mint egy falat kenyér: mindenre készen állt, a mit csak kivántak tőle;
ha azt mondták neki, hogy ugrasson be lóháton a jégzajos folyóba,
megtette s ha azt mondták neki, hogy üljön le a porba a kis
gyerekekkel pitykövet játszani, hát azt is megtette. Pedig sok ilyen
próbát ki kellett neki állani az ő jó barátjától, Lebée Lászlótól, a kivel
együtt gárdistáskodtak Visegrádon, az udvarnál. Mikor megkérte tőle
Anna kezét, azt mondta neki Lebée László: «elébb tanulj meg
magyarul, ha egy év alatt megtanulsz: neked adom.» Az udvarnál
nem tanulhatta azt meg Brüniszkáld, hanem lement a faluba s ott
megtanult magyarul két hónap alatt. Akkor megint azt mondta neki
Lebée László: «hja, édes játom, te idegen vagy, s székely leányt
idegenhez nem adunk; mert a mi törvényünk az, hogy az idegennel
nősült székely nő minden vagyonát elveszti. Ha az Annát el akarod
venni, elébb légy székelylyé.»
Brüniszkáld még erre is ráállt. Pedig az nem ment országbontás
nélkül. Neki elébb ki kellett jelentenie, hogy a maga várával,
Kőhalommal átlép a székely Udvarhelyszék területébe. E miatt az
egész szászság majd megölte; a szebeni szász gróf égre-földre
protestált az átszökés ellen: fenyegette, hogy ostromot visz rá; de
Brüniszkáld azzal mind nem törődött: olyan jó fiú volt, minden
boszuságot eltürt, még is beállt székelynek, s behagyta a szőke haját
fonni három üstökbe, gyöngyös szalagok közé, a hogy akkor a
székelyek viselték.
Ennél erősebb próbára csakugyan nem lehetett már állítani a
derék szász ifjút, annálfogva nem maradt hátra más Lebée
Lászlónak, minthogy kitüzze a menyegző napját, a mikor aztán
csakugyan oda kell adni az Annát a derék Brüniszkáldnak.
És ennek a napnak úgy örült előre – nem a menyasszony, –
hanem a nénje Mária. Valami szent sugallat azt mondá neki, hogy
ettől a naptól kezdve majd ő tökéletes boldog nő fog lenni aztán.
De nagy teketoriával jár ám az ilyen székely lakodalom; annyiféle
ürügye van a huzás-halasztásnak, hogy nagy csoda, ha a szerető
szivek meg nem unják a várakozást.
Nyolcz nappal elébb megtartják a «Siratót». Azon az
egybekelendők minden férfi és nő gyermekkori pajtásának össze kell
gyűlni s a társaságukból kiváló párt vigan elsiratni. Ezután jön az
eljegyzés.
Azután jön a hivatalos leánykérés: egész segédszemélyzettel,
násznagyokkal, vőfényekkel, nagy nyoszolyókkal, kis nyoszolyókkal.
A leányos ház ura nem akar semmit tudni az egész eljegyzésről:
soha hírét sem hallotta a kérő leventének; utoljára bottal kergeti ki
valamennyit. Akkor maga jön vissza a násznépével a vőlegény s
erőszakkal töri be az ajtót s követeli a menyaszonyát, különben kárt
tesz a házban! Arra aztán előhoznak neki egy sánta, pupos vén
banyát; itt van hát a mátkája, vigye el: sorba hordják a világ minden
rútját eléje, hogy válogasson belőlük, míg végre nagy nehezen
előteremtik az igazi szerelmesét. De akkor meg agyon faggatják
bolondnál bolondabb kérdésekkel; a mikre magától kell neki kitalálni
a feleletet, addig nem kapja meg a leány kezét. Ha annak vége van,
következik a moringolás: a kelengye adása, vevése: kegyetlen
szerződéseknek csomóra kötése. Még aztán egy csuprot le kell lőni
nyillal egy magas szálfa hegyéről, addig nem lehet menni az
esküvőre; aztán következik egy hosszú lakoma, a minek vége
várhatatlan ételfogásaihoz a vőfények verseket mondanak.
Asztalbontás után meg a végtelen táncz: a miben a menyasszonynak
sorban kell egyet lejteni a násznép valamennyi férfiával, öregéval,
ifjával. A vőlegény maga is szeretne már hozzá jutni, hogy egyet
tánczolhasson vele; de mindig elkapja más az orra elől, s addig ki
nem adja, míg váltságot nem fizet érte. – Végre egyszer aztán
széttaszítja két öklével Brüniszkáld az utját álló sokaságot s
megragadja kezénél fogva a szép menyasszonyát, át is öleli a
derekát s azt kiáltja: «no most már mégis csak az enyém vagy!» S
aztán int a czifra selyemkendővel a hegedüsnek és trombitásoknak,
hogy most már az ő nótáját huzzák: a vőlegény tánczát.
Rázendítik szépen. Brüniszkáld délczegen lejti a dali tánczot,
bájos szép aráját kezénél vezetve. «Bizony szép egy pár ez!»
mondogatja fenszóval minden ember. De összeillenek! – Mária
szemében is ragyognak könnyek. Az öcscse boldogságán örül, de
talán a magáén is.
Ekkor, midőn legjavában lejtik a vőlegénytánczot, kivül a
tornáczról belebődül a vidám zenébe valami bus kürthang; az ajtó
felnyilik s belép rajta, feltett tollas süveggel a fején, mellén az ország
czimerével, egy pánczélos alak, a kinek az orczája rémületet gerjeszt
marczona tekintetével; de még szörnyűbb az arczánál az, a mit a
kezében magasra emel: egy vértől csepegő pallos.
A zene elnémul, a vigság megszünik; a palloshordó alak megáll a
tánczterem közepén s sok kiabálástól félig berekedt hangon így
rivall:
– A király nevében! Vitézlő székelyek, primórok és lófők! Én, az
ország pristáldja, felhivlak titeket, hogy azonnal lóra, fegyverre
kapjatok, hadseregbe gyüljetek, a «vitéz sereg» azonnal táborba
szálljon, a «gyönge sereg» hirmondásra készen álljon, a «tehetetlen
sereg» a várakba felvonuljon. A véres karddal hivlak a király
nevében ősi szokás szerint, én az ország pristáldja. Teljesüljön a
törvény!»
Azzal megfordult a sarkán a czímeres alak, s a mily merev
ünnepélyességgel jött, olyannal távozott a teremből.
Tudnunk kell mindenek előtt, hogy a székelyeknek kemény
törvényük volt arra, hogy mikor a király körülhordatja a véres kardot,
akkor minden felnőtt férfiúnak lóra fegyverre kell kapni és menni az
ellenség elé s egy egész hónapra való eleséget vinni magával. Nagy
csoda, hogy egy betörő ellenség tovább tartson, mint holdujságtól
holdfogytáig, ha folyvást kopogtatja a fejét a székely a
buzogánynyal. Ez tehát igen jó törvény volt. – Egyéb adót úgy sem
fizetett a székely. Csak olyankor, ha a királynak fia született,
billogoztatott el minden kapu birtokosa egy ökröt a királyfi számára.
Bárcsak több ökröt billogoztak volna el!
A jó Brüniszkáld tehát ráhagyta magát beszéltetni, hogy a
menyegzője kettőbe szakadtával, egyedül, menyasszony nélkül
baktasson haza a várába s összegyüjtve a zászlója alá valamennyi
harczosait, levonuljon a székelyek táborába, a kik mind Aranyos
széken az Aranyos víz rónáin gyültek össze táborokba: mintha onnan
várnának valami ellenséget.
Otthon maradt atyafiai, a szászok, ki is csufolták jól: «Látod! úgy
kell neked! Minek csaptál fel székelynek? Most nem kellene táborba
szállnod.»
Mikor aztán már nagyon sokan gyülekeztek össze a táborban,
egyszer csak jön nagy énekszóval onnan a Királyhágó felől egy
bucsujáró sereg feléjük. Csupa zarándok volt az, hosszú keresztvégű
botokkal a kezében, a palástján, meg a kalapja mellett
csigahéjakkal, a mellükön pedig kereszttel. Előttük lovagolt egy veres
barát, szamárháton, szentképes zászlóval a kezében. Volt abban a
zarándok seregben mindenféle nemzetbeli szerzet: még olyanok is, a
kiknek soha hirét sem hallották a két magyar hazában azok, mind
deák zsolozsmákat énekeltek.
Mikor odaérkeztek a tábor közé, a vezérlő szerzetes leszállt a
lováról s azt kérdezte, hogy kik ennek a seregnek a vezérei. Épen
Brüniszkáld lovagtól kérdezte: annak volt a legfényesebb vértezete.
– Hát ki volna más, mint én, meg a süvem, vitéz Lebée László
itten.
A szerzetes erre megölelte, megcsókolta Brüniszkáldot, a mi
annak sehogy sem volt kedves, mert olyan szaga volt, mint mikor a
penész, meg a hagyma összeházasodik. Hanem hát ez csak azt
bizonyítja, hogy a jámbor zarándok vezér többet lakott földalatti
odukban, mint a fényes palotákban, s élelmét nem a nagyurak
fényes asztaláról, hanem a mezőkről szedegette.
A barát aztán azt mondta Brüniszkáldnak, hogy térdeljen le, hadd
áldja meg.
– Biz én nem térdelek! Ha megakarsz áldani, ágaskodj fel.
Hanem a süve, a Lebée László, az letérdelt a barát előtt, azt meg
is áldta az; azután a dolmányára rátüzött neki egy keresztet veres
posztóból. Brüniszkáldnak is akart, de az azt kérdezte elébb, hogy
mire való az?
A barát valami olyan nyelvet beszélt, a mi magyarból, németből
és olaszból volt keverve: így aztán megértette Brüniszkáld, hogy ha
ő azt a szent jelvényt a köpenyére feltüzeti, akkor ő neki minden
eddig elkövetett és még ezután elkövetendő bünei teljesen meg
lesznek bocsátva.
– Hát tudod, monda Brüniszkáld, én még eddig nagyon kevés
bünt követtem el; hanem ezután szándékozom nagyon sokat
elkövetni; de hát te ki vagy? miféle szerzet? hogy ha az
adósságomat valaha szememre vetik, azt mondhassam, hogy te
elengedted?
– Az én nevem Zenobius. Vagyok pedig a ti vezetőtök a túlvilágon
a szentek paradicsomába, ezen a világon pedig a szent földre.
– Hát oda ugyan nekem nem kell semmi vezetés, mondá
Brüniszkáld; mert most is rajta állok. Ez nekem a szent föld, a
hazám.
Ez a mondás nagyon tetszett a székely hadnagyoknak, kik a két
vezér körül gyülekeztek; de annál kevesbbé Zenobiusnak.
– No azt pedig el kell hagynod; és elindulnod minden hadaiddal
együtt az igazi szent földre, Palaestinába.
– Van eszemben odafáradni! Otthon hagytam egy félig feleségül
vett menyasszonyt, a kivel még jól meg sem ismerkedtem.
– Már pedig otthon kell hagynod a legkedvesebbedet. is. Endre
király Spalatóban vár reátok, a hol veletek együtt hajóra fog szállni.
– Hát Endre királyt mi lelte, hogy Palaestináig meg sem akar állni.
– Szent fogadása készti. Megfogadta boldogult atyjának a halálos
ágyán, hogy elmegy a hitetlenek ellen harczolni.
– Hej de régen volt az! Azóta vissza is jöhetett volna! Csak most
ér rá, hogy a fogadását beváltsa! Könnyű neki! Mikor Halicsban járt
hadat viselni, az alatt a magyarok megölték a feleségét; Isten
nyugtassa meg; kegyetlen egy asszony volt. Most újra
megházasodott, elvett egy vén hárpiát onnan Thüringiából: már
most azt hiszi, hogy ha elmegy, attól is megszabadítják a magyarok.
De én nekem csinos takaros kis feleségem van, a kit nem hagyhatok
itthon nádorispánra. – Ha fogadta Endre király az apjának, hogy
elmegy szerecsent ölni; hát csak menjen, én nem tartóztatom, – én
nem fogadtam az apámnak semmit; én itthon maradok.
– Istentelen pogány beszéd! kiálta fel elszörnyedve Zenobius.
– No Brüniszkáld! szólt közbe Lebée László; ne rugódozzál az
ösztön ellen: a mi parancsolat, az megáll. Mikor a véres kardot körül
hordatja a király, akkor minden székelynek lóra kell ülni és táborba
szállni.
– Megtettem; ideszálltam. Ismerem a törvényt. Mint székely
tartozom az országom határát védelmezni köröskörül mindenféle
ellenség ellen. Meg is teszem. Hozza ide Endre király az ellenséget;
közé vágok: nem ugrok előle a Marosba; de én ellenséget keresni
nem megyek a világ végére; a ki én nekem semmit sem vétett.
– Istentelen! Hát a kik a Krisztus sirját tapostatják lovaikkal!
– Az én Krisztusom a mennyországban van régen, az nincsen a
sirban.
– A kik ellen négy pápa hirdetett keresztes háborut.
– Én azt tanultam, hogy a Krisztus visszadugta Szent Péternek a
kardját a hüvelyébe s azt mondta, hogy ő miatta ne verekedjenek.
Én Szent Péterrel tartok.
– Irtóztató pogány beszéd. Hiszen az ilyenért meg kellene az
embert égetni a székelyeknek.
– Azt mondom, hogy ne hozzatok dühbe! mert ha
megharagszom, székelyebb leszek valamennyiteknél s kitüzöm az
őshit zászlaját a váramra s behozom a lóáldozatot és leszek inkább
pogány, de még sem megyek.

You might also like