Diferentemente da linguagem C (nativamente procedural), a linguagem C++ permite nativamente o paradigma de Programação Orientada a Objetos.
A linguagem C é orientada para trabalhar com variáveis e funções. Já a linguagem C++ também trabalha com modelos chamados Templates, que organizam dados e métodos. Métodos são exatamente essas funções usadas ”dentro” do objeto, que são chamadas a partir dos Templates usados.
A lista a seguir apresenta as funções herdadas da linguagem C e em seguida os métodos para cada Template da linguagem C++.
Para o histórico de desenvolvimento da linguagem, veja: List of standard header files in C and C++
Índice:
1ª Parte: Fundamentos de linguagem / 1st Part: Language Fundamentals
Pre-processor commands
Operator Precedence
Escape Sequences
ASCII Chart
Data Types
Keywords
2ª Parte: Herança da Linguagem C / 2nd Part: C Language Heritage
Standard C I/O
Standard C String and Character
Standard C Math
Standard C Time and Date
Standard C Memory
Other standard C functions
3ª Parte: Inovações da linguagem C++ / 3rd Part: C++ Inovations
C++ I/O
C++ Strings
C++ String Flags
C++ String Streams
Miscellaneous C++
4ª Parte: Biblioteca de Modelos Padrão / 4th Part: Standard Template Library
C++ Standard Template Library
C++ Algorithms
C++ Vectors
C++ Double-Ended Queues
C++ Lists
C++ Priority Queues
C++ Queues
C++ Stacks
C++ Sets
C++ Multisets
C++ Maps
C++ Multimaps
C++ Bitsets
Iterators
1ª Parte: Fundamentos de linguagem / 1st Part: Language Fundamentals
C/C++ Pre-processor Commands
#, ## | manipulate strings |
#define | define variables |
#error | display an error message |
#if, #ifdef, #ifndef, #else, #elif, #endif | conditional operators |
#include | insert the contents of another file |
#line | set line and file information |
#pragma | implementation specific command |
#undef | used to undefine variables |
Predefined preprocessor variables | miscellaneous preprocessor variables |
C++ Operator Precedence
The operators at the top of this list are evaluated first.
Precedence | Operator | Description | Example | Associativity |
1 | :: | Scoping operator | Class::age = 2; | none |
2 | () [] -> . ++ — |
Grouping operator Array access Member access from a pointer Member access from an object Post-increment Post-decrement |
(a + b) / 4; array[4] = 2; ptr->age = 34; obj.age = 34; for( i = 0; i < 10; i++ ) … for( i = 10; i > 0; i– ) … |
left to right |
3 | ! ~ ++ — – + * & (type) sizeof |
Logical negation Bitwise complement Pre-increment Pre-decrement Unary minus Unary plus Dereference Address of Cast to a given type Return size in bytes |
if( !done ) … flags = ~flags; for( i = 0; i < 10; ++i ) … for( i = 10; i > 0; –i ) … int i = -1; int i = +1; data = *ptr; address = &obj; int i = (int) floatNum; int size = sizeof(floatNum); |
right to left |
4 | ->* .* |
Member pointer selector Member pointer selector |
ptr->*var = 24; obj.*var = 24; |
left to right |
5 | * / % |
Multiplication Division Modulus |
int i = 2 * 4; float f = 10 / 3; int rem = 4 % 3; |
left to right |
6 | + – |
Addition Subtraction |
int i = 2 + 3; int i = 5 – 1; |
left to right |
7 | << >> |
Bitwise shift left Bitwise shift right |
int flags = 33 << 1; int flags = 33 >> 1; |
left to right |
8 | < <= > >= |
Comparison less-than Comparison less-than-or-equal-to Comparison greater-than Comparison geater-than-or-equal-to |
if( i < 42 ) … if( i <= 42 ) … if( i > 42 ) … if( i >= 42 ) … |
left to right |
9 | == != |
Comparison equal-to Comparison not-equal-to |
if( i == 42 ) … if( i != 42 ) … |
left to right |
10 | & | Bitwise AND | flags = flags & 42; | left to right |
11 | ^ | Bitwise exclusive OR | flags = flags ^ 42; | left to right |
12 | | | Bitwise inclusive (normal) OR | flags = flags | 42; | left to right |
13 | && | Logical AND | if( conditionA && conditionB ) … | left to right |
14 | || | Logical OR | if( conditionA || conditionB ) … | left to right |
15 | ? : | Ternary conditional (if-then-else) | int i = (a > b) ? a : b; | right to left |
16 | = += -= *= /= %= &= ^= |= <<= >>= |
Assignment operator Increment and assign Decrement and assign Multiply and assign Divide and assign Modulo and assign Bitwise AND and assign Bitwise exclusive OR and assign Bitwise inclusive (normal) OR and assign Bitwise shift left and assign Bitwise shift right and assign |
int a = b; a += 3; b -= 4; a *= 5; a /= 2; a %= 3; flags &= new_flags; flags ^= new_flags; flags |= new_flags; flags <<= 2; flags >>= 2; |
right to left |
17 | , | Sequential evaluation operator | for( i = 0, j = 0; i < 10; i++, j++ ) … | left to right |
It is important to note that there is no specified precedence for the operation of changing a variable into a value. For example, consider the following code:
float x, result; x = 1; result = x / ++x;
The value of result is not guaranteed to be consistent across different compilers, because it is not clear whether the computer should change the variable x (the one that occurs on the left side of the division operator) before using it. Depending on which compiler you are using, the variable result can either be 1.0 or 0.5. The bottom line is that you should not use the same variable multiple times in a single expression when using operators with side effects.
Constant Escape Sequences
The following escape sequences can be used to print out special characters.
Escape Sequence | Description |
\’ | Single quote |
\” | Double quote |
\\ | Backslash |
\nnn | Octal number (nnn) |
\0 | Null character (really just the octal number zero) |
\a | Audible bell |
\b | Backspace |
\f | Formfeed |
\n | Newline |
\r | Carriage return |
\t | Horizontal tab |
\v | Vertical tab |
\xnnn | Hexadecimal number (nnn) |
ASCII Chart
The following chart contains ASCII decimal, octal, hexadecimal and character codes for values from 0 to 127.
Decimal | Octal | Hex | Character | Description | Decimal | Octal | Hex | Character | Description |
0 | 0 | 00 | NUL | 64 | 100 | 40 | @ | ||
1 | 1 | 01 | SOH | start of header | 65 | 101 | 41 | A | |
2 | 2 | 02 | STX | start of text | 66 | 102 | 42 | B | |
3 | 3 | 03 | ETX | end of text | 67 | 103 | 43 | C | |
4 | 4 | 04 | EOT | end of transmission | 68 | 104 | 44 | D | |
5 | 5 | 05 | ENQ | enquiry | 69 | 105 | 45 | E | |
6 | 6 | 06 | ACK | acknowledge | 70 | 106 | 46 | F | |
7 | 7 | 07 | BEL | bell | 71 | 107 | 47 | G | |
8 | 10 | 08 | BS | backspace | 72 | 110 | 48 | H | |
9 | 11 | 09 | HT | horizontal tab | 73 | 111 | 49 | I | |
10 | 12 | 0A | LF | line feed | 74 | 112 | 4A | J | |
11 | 13 | 0B | VT | vertical tab | 75 | 113 | 4B | K | |
12 | 14 | 0C | FF | form feed | 76 | 114 | 4C | L | |
13 | 15 | 0D | CR | carriage return | 77 | 115 | 4D | M | |
14 | 16 | 0E | SO | shift out | 78 | 116 | 4E | N | |
15 | 17 | 0F | SI | shift in | 79 | 117 | 4F | O | |
16 | 20 | 10 | DLE | data link escape | 80 | 120 | 50 | P | |
17 | 21 | 11 | DC1 | no assignment, but usually XON | 81 | 121 | 51 | Q | |
18 | 22 | 12 | DC2 | 82 | 122 | 52 | R | ||
19 | 23 | 13 | DC3 | no assignment, but usually XOFF | 83 | 123 | 53 | S | |
20 | 24 | 14 | DC4 | 84 | 124 | 54 | T | ||
21 | 25 | 15 | NAK | negative acknowledge | 85 | 125 | 55 | U | |
22 | 26 | 16 | SYN | synchronous idle | 86 | 126 | 56 | V | |
23 | 27 | 17 | ETB | end of transmission block | 87 | 127 | 57 | W | |
24 | 30 | 18 | CAN | cancel | 88 | 130 | 58 | X | |
25 | 31 | 19 | EM | end of medium | 89 | 131 | 59 | Y | |
26 | 32 | 1A | SUB | substitute | 90 | 132 | 5A | Z | |
27 | 33 | 1B | ESC | escape | 91 | 133 | 5B | [ | |
28 | 34 | 1C | FS | file seperator | 92 | 134 | 5C | \ | |
29 | 35 | 1D | GS | group seperator | 93 | 135 | 5D | ] | |
30 | 36 | 1E | RS | record seperator | 94 | 136 | 5E | ^ | |
31 | 37 | 1F | US | unit seperator | 95 | 137 | 5F | _ | |
32 | 40 | 20 | SPC | space | 96 | 140 | 60 | ` | |
33 | 41 | 21 | ! | 97 | 141 | 61 | a | ||
34 | 42 | 22 | “ | 98 | 142 | 62 | b | ||
35 | 43 | 23 | # | 99 | 143 | 63 | c | ||
36 | 44 | 24 | $ | 100 | 144 | 64 | d | ||
37 | 45 | 25 | % | 101 | 145 | 65 | e | ||
38 | 46 | 26 | & | 102 | 146 | 66 | f | ||
39 | 47 | 27 | ‘ | 103 | 147 | 67 | g | ||
40 | 50 | 28 | ( | 104 | 150 | 68 | h | ||
41 | 51 | 29 | ) | 105 | 151 | 69 | i | ||
42 | 52 | 2A | * | 106 | 152 | 6A | j | ||
43 | 53 | 2B | + | 107 | 153 | 6B | k | ||
44 | 54 | 2C | , | 108 | 154 | 6C | l | ||
45 | 55 | 2D | – | 109 | 155 | 6D | m | ||
46 | 56 | 2E | . | 110 | 156 | 6E | n | ||
47 | 57 | 2F | / | 111 | 157 | 6F | o | ||
48 | 60 | 30 | 0 | 112 | 160 | 70 | p | ||
49 | 61 | 31 | 1 | 113 | 161 | 71 | q | ||
50 | 62 | 32 | 2 | 114 | 162 | 72 | r | ||
51 | 63 | 33 | 3 | 115 | 163 | 73 | s | ||
52 | 64 | 34 | 4 | 116 | 164 | 74 | t | ||
53 | 65 | 35 | 5 | 117 | 165 | 75 | u | ||
54 | 66 | 36 | 6 | 118 | 166 | 76 | v | ||
55 | 67 | 37 | 7 | 119 | 167 | 77 | w | ||
56 | 70 | 38 | 8 | 120 | 170 | 78 | x | ||
57 | 71 | 39 | 9 | 121 | 171 | 79 | y | ||
58 | 72 | 3A | : | 122 | 172 | 7A | z | ||
59 | 73 | 3B | ; | 123 | 173 | 7B | { | ||
60 | 74 | 3C | < | 124 | 174 | 7C | | | ||
61 | 75 | 3D | = | 125 | 175 | 7D | } | ||
62 | 76 | 3E | > | 126 | 176 | 7E | ~ | ||
63 | 77 | 3F | ? | 127 | 177 | 7F | DEL | delete |
C/C++ Data Types
There are five data types for C: void, int, float, double, and char.
Type | Description |
void | associated with no data type |
int | integer |
float | floating-point number |
double | double precision floating-point number |
char | character |
C++ defines two more: bool and wchar_t.
Type | Description |
bool | Boolean value, true or false |
wchar_t | wide character |
Type Modifiers
Several of these types can be modified using signed, unsigned, short, and long. When one of these type modifiers is used by itself, a data type of int is assumed. A complete list of possible data types follows:
bool | int | long int |
char | unsigned int | signed long int |
unsigned char | signed int | unsigned long int |
signed char | short int | float |
wchar_t | unsigned short int | double |
signed short int | long double |
The size and range of any data type is compiler and architecture dependent. The “cfloat” (or “float.h”) header file often defines minimum and maximum values for the various data types. You can use the sizeof operator to determine the size of any data type, in bytes. However, many architectures implement data types of a standard size. ints and floats are often 32-bit, chars 8-bit, and doubles are usually 64-bit. bools are often implemented as 8-bit data types.Type Sizes and Ranges
C/C++ Keywords
asm | insert an assembly instruction |
auto | declare a local variable |
bool | declare a boolean variable |
break | break out of a loop |
case | a block of code in a switch statement |
catch | handles exceptions from throw |
char | declare a character variable |
class | declare a class |
const | declare immutable data or functions that do not change data |
const_cast | cast from const variables |
continue | bypass iterations of a loop |
default | default handler in a case statement |
delete | make memory available |
do | looping construct |
double | declare a double precision floating-point variable |
dynamic_cast | perform runtime casts |
else | alternate case for an if statement |
enum | create enumeration types |
explicit | only use constructors when they exactly match |
export | allows template definitions to be separated from their declarations |
extern | tell the compiler about variables defined elsewhere |
false | the boolean value of false |
float | declare a floating-point variable |
for | looping construct |
friend | grant non-member function access to private data |
goto | jump to a different part of the program |
if | execute code based off of the result of a test |
inline | optimize calls to short functions |
int | declare a integer variable |
long | declare a long integer variable |
mutable | override a const variable |
namespace | partition the global namespace by defining a scope |
new | allocate dynamic memory for a new variable |
operator | create overloaded operator functions |
private | declare private members of a class |
protected | declare protected members of a class |
public | declare public members of a class |
register | request that a variable be optimized for speed |
reinterpret_cast | change the type of a variable |
return | return from a function |
short | declare a short integer variable |
signed | modify variable type declarations |
sizeof | return the size of a variable or type |
static | create permanent storage for a variable |
static_cast | perform a nonpolymorphic cast |
struct | define a new structure |
switch | execute code based off of different possible values for a variable |
template | create generic functions |
this | a pointer to the current object |
throw | throws an exception |
true | the boolean value of true |
try | execute code that can throw an exception |
typedef | create a new type name from an existing type |
typeid | describes an object |
typename | declare a class or undefined type |
union | a structure that assigns multiple variables to the same memory location |
unsigned | declare an unsigned integer variable |
using | import complete or partial namespaces into the current scope |
virtual | create a function that can be overridden by a derived class |
void | declare functions or data with no associated data type |
volatile | warn the compiler about variables that can be modified unexpectedly |
wchar_t | declare a wide-character variable |
while | looping construct |
2ª Parte: Herança da Linguagem C / 2nd Part: C Language Heritage
Standard C I/O
clearerr | clears errors |
fclose | close a file |
feof | true if at the end-of-file |
ferror | checks for a file error |
fflush | writes the contents of the output buffer |
fgetc | get a character from a stream |
fgetpos | get the file position indicator |
fgets | get a string of characters from a stream |
fopen | open a file |
fprintf | print formatted output to a file |
fputc | write a character to a file |
fputs | write a string to a file |
fread | read from a file |
freopen | open an existing stream with a different name |
fscanf | read formatted input from a file |
fseek | move to a specific location in a file |
fsetpos | move to a specific location in a file |
ftell | returns the current file position indicator |
fwrite | write to a file |
getc | read a character from a file |
getchar | read a character from STDIN |
gets | read a string from STDIN |
perror | displays a string version of the current error to STDERR |
printf | write formatted output to STDOUT |
putc | write a character to a stream |
putchar | write a character to STDOUT |
puts | write a string to STDOUT |
remove | erase a file |
rename | rename a file |
rewind | move the file position indicator to the beginning of a file |
scanf | read formatted input from STDIN |
setbuf | set the buffer for a specific stream |
setvbuf | set the buffer and size for a specific stream |
sprintf | write formatted output to a buffer |
sscanf | read formatted input from a buffer |
tmpfile | return a pointer to a temporary file |
tmpnam | return a unique filename |
ungetc | puts a character back into a stream |
vprintf, vfprintf, and vsprintf | write formatted output with variable argument lists |
Standard C String and Character
atof | converts a string to a double |
atoi | converts a string to an integer |
atol | converts a string to a long |
isalnum | true if a character is alphanumeric |
isalpha | true if a character is alphabetic |
iscntrl | true if a character is a control character |
isdigit | true if a character is a digit |
isgraph | true if a character is a graphical character |
islower | true if a character is lowercase |
isprint | true if a character is a printing character |
ispunct | true if a character is punctuation |
isspace | true if a character is a space character |
isupper | true if a character is an uppercase character |
isxdigit | true if a character is a hexidecimal character |
memchr | searches an array for the first occurance of a character |
memcmp | compares two buffers |
memcpy | copies one buffer to another |
memmove | moves one buffer to another |
memset | fills a buffer with a character |
strcat | concatenates two strings |
strchr | finds the first occurance of a character in a string |
strcmp | compares two strings |
strcoll | compares two strings in accordance to the current locale |
strcpy | copies one string to another |
strcspn | searches one string for any characters in another |
strerror | returns a text version of a given error code |
strlen | returns the length of a given string |
strncat | concatenates a certain amount of characters of two strings |
strncmp | compares a certain amount of characters of two strings |
strncpy | copies a certain amount of characters from one string to another |
strpbrk | finds the first location of any character in one string, in another string |
strrchr | finds the last occurance of a character in a string |
strspn | returns the length of a substring of characters of a string |
strstr | finds the first occurance of a substring of characters |
strtod | converts a string to a double |
strtok | finds the next token in a string |
strtol | converts a string to a long |
strtoul | converts a string to an unsigned long |
strxfrm | converts a substring so that it can be used by string comparison functions |
tolower | converts a character to lowercase |
toupper | converts a character to uppercase |
Standard C Math
abs | absolute value |
acos | arc cosine |
asin | arc sine |
atan | arc tangent |
atan2 | arc tangent, using signs to determine quadrants |
ceil | the smallest integer not less than a certain value |
cos | cosine |
cosh | hyperbolic cosine |
div | returns the quotient and remainder of a division |
exp | returns “e” raised to a given power |
fabs | absolute value for floating-point numbers |
floor | returns the largest integer not greater than a given value |
fmod | returns the remainder of a division |
frexp | decomposes a number into scientific notation |
labs | absolute value for long integers |
ldexp | computes a number in scientific notation |
ldiv | returns the quotient and remainder of a division, in long integer form |
log | natural logarithm (to base e) |
log10 | common logarithm (to base 10) |
modf | decomposes a number into integer and fractional parts |
pow | returns a given number raised to another number |
sin | sine |
sinh | hyperbolic sine |
sqrt | square root |
tan | tangent |
tanh | hyperbolic tangent |
Standard C Time and Date
asctime | a textual version of the time |
clock | returns the amount of time that the program has been running |
ctime | returns a specifically formatted version of the time |
difftime | the difference between two times |
gmtime | returns a pointer to the current Greenwich Mean Time |
localtime | returns a pointer to the current time |
mktime | returns the calendar version of a given time |
setlocale | sets the current locale |
strftime | returns individual elements of the date and time |
time | returns the current calendar time of the system |
Standard C Memory
calloc | allocates and clears a two-dimensional chunk of memory |
free | returns previously allocated memory to the operating system |
malloc | allocates memory |
realloc | changes the size of previously allocated memory |
Other Standard C Functions
abort | stops the program |
assert | stops the program if an expression isn’t true |
atexit | sets a function to be called when the program exits |
bsearch | perform a binary search |
exit | stop the program |
getenv | get enviornment information about a variable |
longjmp | start execution at a certain point in the program |
qsort | perform a quicksort |
raise | send a signal to the program |
rand | returns a pseudorandom number |
setjmp | set execution to start at a certain point |
signal | register a function as a signal handler |
srand | initialize the random number generator |
system | perform a system call |
va_arg | use variable length parameter lists |
3ª Parte: Inovações da linguagem C++ / 3rd Part: C++ Inovations
C++ I/O
The <iostream> library automatically defines a few standard objects:
- cout, an object of the ostream class, which displays data to the standard output device.
- cerr, another object of the ostream class that writes unbuffered output to the standard error device.
- clog, like cerr, but uses buffered output.
- cin, an object of the istream class that reads data from the standard input device.
The <fstream> library allows programmers to do file input and output with the ifstream and ofstream classes.
C++ programmers can also do input and output from strings by using the String Stream class.
Some of the behavior of the C++ I/O streams (precision, justification, etc) may be modified by manipulating various io stream format flags.
I/O Constructors | constructors |
bad | true if an error occurred |
clear | clear and set status flags |
close | close a stream |
eof | true if at the end-of-file |
fail | true if an error occurred |
fill | manipulate the default fill character |
flags | access or manipulate io stream format flags |
flush | empty the buffer |
gcount | number of characters read during last input |
get | read characters |
getline | read a line of characters |
good | true if no errors have occurred |
ignore | read and discard characters |
open | create an input stream |
peek | check the next input character |
precision | manipulate the precision of a stream |
put | write characters |
putback | return characters to a stream |
rdstate | returns the state flags of the stream |
read | read data into a buffer |
seekg | perform random access on an input stream |
seekp | perform random access on output streams |
setf | set format flags |
sync_with_stdio | synchronize with standard I/O |
tellg | read input stream pointers |
tellp | read output stream pointers |
unsetf | clear io stream format flags |
width | access and manipulate the minimum field width |
write | write characters |
C++ I/O Flags
Format flags
C++ defines some format flags for standard input and output, which can be manipulated with the flags(), setf(), and unsetf() functions. For example,
cout.setf(ios::left);
turns on left justification for all output directed to cout.
Flag | Meaning |
boolalpha | Boolean values can be input/output using the words “true” and “false”. |
dec | Numeric values are displayed in decimal. |
fixed | Display floating point values using normal notation (as opposed to scientific). |
hex | Numeric values are displayed in hexidecimal. |
internal | If a numeric value is padded to fill a field, spaces are inserted between the sign and base character. |
left | Output is left justified. |
oct | Numeric values are displayed in octal. |
right | Output is right justified. |
scientific | Display floating point values using scientific notation. |
showbase | Display the base of all numeric values. |
showpoint | Display a decimal and extra zeros, even when not needed. |
showpos | Display a leading plus sign before positive numeric values. |
skipws | Discard whitespace characters (spaces, tabs, newlines) when reading from a stream. |
unitbuf | Flush the buffer after each insertion. |
uppercase | Display the “e” of scientific notation and the “x” of hexidecimal notation as capital letters. |
Manipulators
You can also manipulate flags indirectly, using the following manipulators. Most programmers are familiar with the endl manipulator, which might give you an idea of how manipulators are used. For example, to set the dec flag, you might use the following command:
cout << dec;
Manipulators defined in <iostream> | |||
Manipulator | Description | Input | Output |
boolalpha | Turns on the boolalpha flag |
X |
X |
dec | Turns on the dec flag |
X |
X |
endl | Output a newline character, flush the stream |
X |
|
ends | Output a null character |
X |
|
fixed | Turns on the fixed flag |
X |
|
flush | Flushes the stream |
X |
|
hex | Turns on the hex flag |
X |
X |
internal | Turns on the internal flag |
X |
|
left | Turns on the left flag |
X |
|
noboolalpha | Turns off the boolalpha flag |
X |
X |
noshowbase | Turns off the showbase flag |
X |
|
noshowpoint | Turns off the showpoint flag |
X |
|
noshowpos | Turns off the showpos flag |
X |
|
noskipws | Turns off the skipws flag |
X |
|
nounitbuf | Turns off the unitbuf flag |
X |
|
nouppercase | Turns off the uppercase flag |
X |
|
oct | Turns on the oct flag |
X |
X |
right | Turns on the right flag |
X |
|
scientific | Turns on the scientific flag |
X |
|
showbase | Turns on the showbase flag |
X |
|
showpoint | Turns on the showpoint flag |
X |
|
showpos | Turns on the showpos flag |
X |
|
skipws | Turns on the skipws flag |
X |
|
unitbuf | Turns on the unitbuf flag |
X |
|
uppercase | Turns on the uppercase flag |
X |
|
ws | Skip any leading whitespace |
X |
Manipulators defined in <iomanip> | |||
Manipulator | Description | Input | Output |
resetiosflags( long f ) | Turn off the flags specified by f |
X |
X |
setbase( int base ) | Sets the number base to base |
X |
|
setfill( int ch ) | Sets the fill character to ch |
X |
|
setiosflags( long f ) | Turn on the flags specified by f |
X |
X |
setprecision( int p ) | Sets the number of digits of precision |
X |
|
setw( int w ) | Sets the field width to w |
X |
State flags
The I/O stream state flags tell you the current state of an I/O stream. The flags are:
Flag | Meaning |
badbit | a fatal error has occurred |
eofbit | EOF has been found |
failbit | a nonfatal error has occurred |
goodbit | no errors have occurred |
Mode flags
The I/O stream mode flags allow you to access files in different ways. The flags are:
Mode | Meaning |
ios::app | append output |
ios::ate | seek to EOF when opened |
ios::binary | open the file in binary mode |
ios::in | open the file for reading |
ios::out | open the file for writing |
ios::trunc | overwrite the existing file |
C++ Strings
String operators | concatenate strings, assign strings, use strings for I/O, compare strings |
append | append characters and strings onto a string |
assign | give a string values from strings of characters and other C++ strings |
at | returns an element at a specific location |
begin | returns an iterator to the beginning of the string |
c_str | returns a standard C character array version of the string |
capacity | returns the number of elements that the string can hold |
clear | removes all elements from the string |
compare | compares two strings |
copy | copies characters from a string into an array |
data | returns a pointer to the first character of a string |
empty | true if the string has no elements |
end | returns an iterator just past the last element of a string |
erase | removes elements from a string |
find | find characters in the string |
find_first_not_of | find first absence of characters |
find_first_of | find first occurrence of characters |
find_last_not_of | find last absence of characters |
find_last_of | find last occurrence of characters |
getline | read data from an I/O stream into a string |
insert | insert characters into a string |
length | returns the length of the string |
max_size | returns the maximum number of elements that the string can hold |
push_back | add an element to the end of the string |
rbegin | returns a reverse_iterator to the end of the string |
rend | returns a reverse_iterator to the beginning of the string |
replace | replace characters in the string |
reserve | sets the minimum capacity of the string |
resize | change the size of the string |
rfind | find the last occurrence of a substring |
size | returns the number of items in the string |
substr | returns a certain substring |
swap | swap the contents of this string with another |
C++ String Streams
String streams are similar to the <iostream> and <fstream> libraries, except that string streams allow you to perform I/O on strings instead of streams. The <sstream> library provides functionality similar to sscanf() and sprintf() in the standard C library. Three main classes are available in <sstream>:
- stringstream – allows input and output
- istringstream – allows input only
- ostringstream – allows output only
String streams are actually subclasses of iostreams, so all of the functions available for iostreams are also available for stringstream. See the C++ I/O functions for more information.
Constructors | create new string streams |
Operators | read from and write to string streams |
rdbuf | get the buffer for a string stream |
str | get or set the stream’s string |
Miscellaneous C++
auto_ptr | create pointers that automatically destroy objects |
4ª Parte: Biblioteca de Modelos Padrão / 4th Part: Standard Template Library
C++ Standard Template Library
The C++ STL (Standard Template Library) is a generic collection of class templates and algorithms that allow programmers to easily implement standard data structures like queues, lists, and stacks.
The C++ STL provides programmers with the following constructs, grouped into three categories:
- Sequences
- C++ Vectors
- C++ Lists
- C++ Double-Ended Queues
- Container Adapters
- C++ Stacks
- C++ Queues
- C++ Priority Queues
- Associative Containers
- C++ Bitsets
- C++ Maps
- C++ Multimaps
- C++ Sets
- C++ Multisets
The idea behind the C++ STL is that the hard part of using complex data structures has already been completed. If a programmer would like to use a stack of integers, all that she has to do is use this code:
stack<int> myStack;
With minimal effort, she can now push() and pop() integers onto this stack. Through the magic of C++ Templates, she could specify any data type, not just integers. The STL Stack class will provide generic functionality of a stack, regardless of the data in the stack.
C++ Algorithms
accumulate | sum up a range of elements |
adjacent_difference | compute the differences between adjacent elements in a range |
adjacent_find | finds two items that are adjacent to eachother |
binary_search | determine if an element exists in a certain range |
copy | copy some range of elements to a new location |
copy_backward | copy a range of elements in backwards order |
copy_n | copy N elements |
count | return the number of elements matching a given value |
count_if | return the number of elements for which a predicate is true |
equal | determine if two sets of elements are the same |
equal_range | search for a range of elements that are all equal to a certain element |
fill | assign a range of elements a certain value |
fill_n | assign a value to some number of elements |
find | find a value in a given range |
find_end | find the last sequence of elements in a certain range |
find_first_of | search for any one of a set of elements |
find_if | find the first element for which a certain predicate is true |
for_each | apply a function to a range of elements |
generate | saves the result of a function in a range |
generate_n | saves the result of N applications of a function |
includes | returns true if one set is a subset of another |
inner_product | compute the inner product of two ranges of elements |
inplace_merge | merge two ordered ranges in-place |
is_heap | returns true if a given range is a heap |
is_sorted | returns true if a range is sorted in ascending order |
iter_swap | swaps the elements pointed to by two iterators |
lexicographical_compare | returns true if one range is lexicographically less than another |
lexicographical_compare_3way | determines if one range is lexicographically less than or greater than another |
lower_bound | search for the first place that a value can be inserted while preserving order |
make_heap | creates a heap out of a range of elements |
max | returns the larger of two elements |
max_element | returns the largest element in a range |
merge | merge two sorted ranges |
min | returns the smaller of two elements |
min_element | returns the smallest element in a range |
mismatch | finds the first position where two ranges differ |
next_permutation | generates the next greater lexicographic permutation of a range of elements |
nth_element | put one element in its sorted location and make sure that no elements to its left are greater than any elements to its right |
partial_sort | sort the first N elements of a range |
partial_sort_copy | copy and partially sort a range of elements |
partial_sum | compute the partial sum of a range of elements |
partition | divide a range of elements into two groups |
pop_heap | remove the largest element from a heap |
power | compute the value of some number raised to the Nth power |
prev_permutation | generates the next smaller lexicographic permutation of a range of elements |
push_heap | add an element to a heap |
random_sample | randomly copy elements from one range to another |
random_sample_n | sample N random elements from a range |
random_shuffle | randomly re-order elements in some range |
remove | remove elements equal to certain value |
remove_copy | copy a range of elements omitting those that match a certian value |
remove_copy_if | create a copy of a range of elements, omitting any for which a predicate is true |
remove_if | remove all elements for which a predicate is true |
replace | replace every occurrence of some value in a range with another value |
replace_copy | copy a range, replacing certain elements with new ones |
replace_copy_if | copy a range of elements, replacing those for which a predicate is true |
replace_if | change the values of elements for which a predicate is true |
reverse | reverse elements in some range |
reverse_copy | create a copy of a range that is reversed |
rotate | move the elements in some range to the left by some amount |
rotate_copy | copy and rotate a range of elements |
search | search for a range of elements |
search_n | search for N consecutive copies of an element in some range |
set_difference | computes the difference between two sets |
set_intersection | computes the intersection of two sets |
set_symmetric_difference | computes the symmetric difference between two sets |
set_union | computes the union of two sets |
sort | sort a range into ascending order |
sort_heap | turns a heap into a sorted range of elements |
stable_partition | divide elements into two groups while preserving their relative order |
stable_sort | sort a range of elements while preserving order between equal elements |
swap | swap the values of two objects |
swap_ranges | swaps two ranges of elements |
transform | applies a function to a range of elements |
unique | remove consecutive duplicate elements in a range |
unique_copy | create a copy of some range of elements that contains no consecutive duplicates |
upper_bound | searches for the last possible location to insert an element into an ordered range |
C++ Vectors
Vectors contain contiguous elements stored as an array. Accessing members of a vector or appending elements can be done in constant time, whereas locating a specific value or inserting elements into the vector takes linear time.
Vector constructors | create vectors and initialize them with some data |
Vector operators | compare, assign, and access elements of a vector |
assign | assign elements to a vector |
at | returns an element at a specific location |
back | returns a reference to last element of a vector |
begin | returns an iterator to the beginning of the vector |
capacity | returns the number of elements that the vector can hold |
clear | removes all elements from the vector |
empty | true if the vector has no elements |
end | returns an iterator just past the last element of a vector |
erase | removes elements from a vector |
front | returns a reference to the first element of a vector |
insert | inserts elements into the vector |
max_size | returns the maximum number of elements that the vector can hold |
pop_back | removes the last element of a vector |
push_back | add an element to the end of the vector |
rbegin | returns a reverse_iterator to the end of the vector |
rend | returns a reverse_iterator to the beginning of the vector |
reserve | sets the minimum capacity of the vector |
resize | change the size of the vector |
size | returns the number of items in the vector |
swap | swap the contents of this vector with another |
C++ Double-ended Queues
Double-ended queues are like vectors, except that they allow fast insertions and deletions at the beginning (as well as the end) of the container.
Container constructors | create dequeues and initialize them with some data |
Container operators | compare, assign, and access elements of a dequeue |
assign | assign elements to a dequeue |
at | returns an element at a specific location |
back | returns a reference to last element of a dequeue |
begin | returns an iterator to the beginning of the dequeue |
clear | removes all elements from the dequeue |
empty | true if the dequeue has no elements |
end | returns an iterator just past the last element of a dequeue |
erase | removes elements from a dequeue |
front | returns a reference to the first element of a dequeue |
insert | inserts elements into the dequeue |
max_size | returns the maximum number of elements that the dequeue can hold |
pop_back | removes the last element of a dequeue |
pop_front | removes the first element of the dequeue |
push_back | add an element to the end of the dequeue |
push_front | add an element to the front of the dequeue |
rbegin | returns a reverse_iterator to the end of the dequeue |
rend | returns a reverse_iterator to the beginning of the dequeue |
resize | change the size of the dequeue |
size | returns the number of items in the dequeue |
swap | swap the contents of this dequeue with another |
C++ Lists
Lists are sequences of elements stored in a linked list. Compared to vectors, they allow fast insertions and deletions, but slower random access.
Container constructors | create lists and initialize them with some data |
Container operators | assign and compare lists |
assign | assign elements to a list |
back | returns a reference to last element of a list |
begin | returns an iterator to the beginning of the list |
clear | removes all elements from the list |
empty | true if the list has no elements |
end | returns an iterator just past the last element of a list |
erase | removes elements from a list |
front | returns a reference to the first element of a list |
insert | inserts elements into the list |
max_size | returns the maximum number of elements that the list can hold |
merge | merge two lists |
pop_back | removes the last element of a list |
pop_front | removes the first element of the list |
push_back | add an element to the end of the list |
push_front | add an element to the front of the list |
rbegin | returns a reverse_iterator to the end of the list |
remove | removes elements from a list |
remove_if | removes elements conditionally |
rend | returns a reverse_iterator to the beginning of the list |
resize | change the size of the list |
reverse | reverse the list |
size | returns the number of items in the list |
sort | sorts a list into ascending order |
splice | merge two lists in constant time |
swap | swap the contents of this list with another |
unique | removes consecutive duplicate elements |
C++ Priority Queues
C++ Priority Queues are like queues, but the elements inside the the data structure are ordered by some predicate.
Priority queue constructors | construct a new priority queue |
empty | true if the priority queue has no elements |
pop | removes the top element of a priority queue |
push | adds an element to the end of the priority queue |
size | returns the number of items in the priority queue |
top | returns the top element of the priority queue |
C++ Queues
The C++ Queue is a container adapter that gives the programmer a FIFO (first-in, first-out) data structure.
Queue constructor | construct a new queue |
back | returns a reference to last element of a queue |
empty | true if the queue has no elements |
front | returns a reference to the first element of a queue |
pop | removes the top element of a queue |
push | adds an element to the end of the queue |
size | returns the number of items in the queue |
C++ Stacks
The C++ Stack is a container adapter that gives the programmer the functionality of a stack — specifically, a FILO (first-in, last-out) data structure.
Stack constructors | construct a new stack |
empty | true if the stack has no elements |
pop | removes the top element of a stack |
push | adds an element to the top of the stack |
size | returns the number of items in the stack |
top | returns the top element of the stack |
C++ Sets
The C++ Set is an associative container that contains a sorted set of unique objects.
Set constructors & destructors | default methods to allocate, copy, and deallocate sets |
Set operators | assign and compare sets |
begin | returns an iterator to the beginning of the set |
clear | removes all elements from the set |
count | returns the number of elements matching a certain key |
empty | true if the set has no elements |
end | returns an iterator just past the last element of a set |
equal_range | returns iterators to the first and just past the last elements matching a specific key |
erase | removes elements from a set |
find | returns an iterator to specific elements |
insert | insert items into a set |
key_comp | returns the function that compares keys |
lower_bound | returns an iterator to the first element greater than or equal to a certain value |
max_size | returns the maximum number of elements that the set can hold |
rbegin | returns a reverse_iterator to the end of the set |
rend | returns a reverse_iterator to the beginning of the set |
size | returns the number of items in the set |
swap | swap the contents of this set with another |
upper_bound | returns an iterator to the first element greater than a certain value |
value_comp | returns the function that compares values |
C++ Multisets
C++ Multisets are like sets, in that they are associative containers containing a sorted set of objects, but differ in that they allow duplicate objects.
Container constructors & destructors | default methods to allocate, copy, and deallocate multisets |
Container operators | assign and compare multisets |
begin | returns an iterator to the beginning of the multiset |
clear | removes all elements from the multiset |
count | returns the number of elements matching a certain key |
empty | true if the multiset has no elements |
end | returns an iterator just past the last element of a multiset |
equal_range | returns iterators to the first and just past the last elements matching a specific key |
erase | removes elements from a multiset |
find | returns an iterator to specific elements |
insert | inserts items into a multiset |
key_comp | returns the function that compares keys |
lower_bound | returns an iterator to the first element greater than or equal to a certain value |
max_size | returns the maximum number of elements that the multiset can hold |
rbegin | returns a reverse_iterator to the end of the multiset |
rend | returns a reverse_iterator to the beginning of the multiset |
size | returns the number of items in the multiset |
swap | swap the contents of this multiset with another |
upper_bound | returns an iterator to the first element greater than a certain value |
value_comp | returns the function that compares values |
C++ Maps
C++ Maps are sorted associative containers that contain unique key/value pairs. For example, you could create a map that associates a string with an integer, and then use that map to associate the number of days in each month with the name of each month.
Map constructors & destructors | default methods to allocate, copy, and deallocate maps |
Map operators | assign, compare, and access elements of a map |
begin | returns an iterator to the beginning of the map |
clear | removes all elements from the map |
count | returns the number of elements matching a certain key |
empty | true if the map has no elements |
end | returns an iterator just past the last element of a map |
equal_range | returns iterators to the first and just past the last elements matching a specific key |
erase | removes elements from a map |
find | returns an iterator to specific elements |
insert | insert items into a map |
key_comp | returns the function that compares keys |
lower_bound | returns an iterator to the first element greater than or equal to a certain value |
max_size | returns the maximum number of elements that the map can hold |
rbegin | returns a reverse_iterator to the end of the map |
rend | returns a reverse_iterator to the beginning of the map |
size | returns the number of items in the map |
swap | swap the contents of this map with another |
upper_bound | returns an iterator to the first element greater than a certain value |
value_comp | returns the function that compares values |
C++ Multimaps
C++ Multimaps are like maps, in that they are sorted associative containers, but differ from maps in that they allow duplicate keys.
Multimap constructors & destructors | default methods to allocate, copy, and deallocate multimaps |
Multimap operators | assign and compare multimaps |
begin | returns an iterator to the beginning of the multimap |
clear | removes all elements from the multimap |
count | returns the number of elements matching a certain key |
empty | true if the multimap has no elements |
end | returns an iterator just past the last element of a multimap |
equal_range | returns iterators to the first and just past the last elements matching a specific key |
erase | removes elements from a multimap |
find | returns an iterator to specific elements |
insert | inserts items into a multimap |
key_comp | returns the function that compares keys |
lower_bound | returns an iterator to the first element greater than or equal to a certain value |
max_size | returns the maximum number of elements that the multimap can hold |
rbegin | returns a reverse_iterator to the end of the multimap |
rend | returns a reverse_iterator to the beginning of the multimap |
size | returns the number of items in the multimap |
swap | swap the contents of this multimap with another |
upper_bound | returns an iterator to the first element greater than a certain value |
value_comp | returns the function that compares values |
C++ Bitsets
C++ Bitsets give the programmer a set of bits as a data structure. Bitsets can be manipulated by various binary operators such as logical AND, OR, and so on.
Bitset Constructors | create new bitsets |
Bitset Operators | compare and assign bitsets |
any | true if any bits are set |
count | returns the number of set bits |
flip | reverses the bitset |
none | true if no bits are set |
reset | sets bits to zero |
set | sets bits |
size | number of bits that the bitset can hold |
test | returns the value of a given bit |
to_string | string representation of the bitset |
to_ulong | returns an integer representation of the bitset |
C++ Iterators
Iterators are used to access members of the container classes, and can be used in a similar manner to pointers. For example, one might use an iterator to step through the elements of a vector. There are several different types of iterators:
Iterator | Description |
input_iterator | Read values with forward movement. These can be incremented, compared, and dereferenced. |
output_iterator | Write values with forward movement. These can be incremented and dereferenced. |
forward_iterator | Read or write values with forward movement. These combine the functionality of input and output iterators with the ability to store the iterators value. |
bidirectional_iterator | Read and write values with forward and backward movement. These are like the forward iterators, but you can increment and decrement them. |
random_iterator | Read and write values with random access. These are the most powerful iterators, combining the functionality of bidirectional iterators with the ability to do pointer arithmetic and pointer comparisons. |
reverse_iterator | Either a random iterator or a bidirectional iterator that moves in reverse direction. |
Each of the container classes is associated with a type of iterator, and each of the STL algorithms uses a certain type of iterator. For example, vectors are associated with random-access iterators, which means that they can use algorithms that require random access. Since random-access iterators encompass all of the characteristics of the other iterators, vectors can use algorithms designed for other iterators as well.
Notice that you can access the elements of the container by dereferencing the iterator.
Lista de referências compilada a partir de: https://doc.bccnsoft.com/docs/cppreference_en/index.html