Professional Documents
Culture Documents
Important Review
1
Contents
C++'s Simple Data Types
Programmer-Defined Data Types
Pointers
Dynamic Memory Allocation
Arrays
Dynamic Arrays
Pointer Arithmetic
Templates
vector STL
2
Lecture Objectives
Review on C++
Pointer
Dynamic Memory Allocation
Arrays
function templates
class templates
vector STL.
3
C++ Types
1. array
1. characters 1. integers 2. struct
2. char 2. int
3. vector
3. unsigned char 3. Short int
4. signed char 4. Long int 4. set
5. unsigned 5. list
6. unsigned short 6. stack
7. unsigned long 7. queue
8. tree
9. graph
C++ Simple Data Types
Integers
Unsigned integers (cardinal number)
The set of non-negative number. {0,1,2,3,}
unsigned short: values are stored in 2 bytes.
Unsigned:
unsigned long: values are stored in 4 bytes.
Signed integers
The set of negative and positive numbers.
{,-3,-2,-1,0,1,2,3,}
short, int, long
5
Two's Complement Representation
For nonnegative n:
Use ordinary base-two representation with
leading (sign) bit 0
For n < 0
1) Find w-bit base-2 representation of |n|
2) Complement each bit.
3) Add 1
6
Two's Complement Representation
Example: 88
1. 88 as a 16-bit base-two number
0000000001011000
2. Complement this bit string
1111111110100111
WHY?
3. Add 1
1111111110101000
7
Two's Complement Representation
Works well for arithmetic computations
5 + 6:
0000000000000101
+1111111111111010
1111111111111111
What gets done to the
bits to give this
answer?
8
Problems with Integer Representation
9
C++ Simple Data Types
Real Data (floating point values)
Types float and double in C++
Type double is the default type used for processing real
data.
A suffix F can be attached to a real literal as in 123.45F
to specify that it is to be processed as a float value.
Attaching L specifies a long double value.
Store:
sign of mantissa in leftmost bit (0 = +, 1 = )
represent exponent in next 8 bits
(exponent + 127)
bits b2b3 . . .b24 mantissa in rightmost 23 bits.
Need not store b1 (we know it's 1)
10
Real Data
Example: 22.625 = 10110.1012
Floating point form:
1.01101012 * 24
11
Problems with Real Representation
Exponent overflow and underflow
12
Problems with Real Representation
Round off error may be compounded in a sequence
of operations.
Real-world example Gulf War Patriot missile guidance
affected by accumulated round off
13
C++ Simple Data Types
Character Data
1 byte for ASCII, EBCDIC
2 bytes for Unicode (java)
or C++ wide character type
14
C++ Simple Data Types
Boolean Data
Values { false, true }
Could be stored in bits, usually use a byte
Operations &&, ||
In C++
bool type
int (boolVal) evaluates to
0 if false
1 if true
15
Programmer-Defined Data Types
Typedefs
Mechanism usable to create a new type
Give new name to existing type
Example:
typedef double real;
Now either double or real can be used.
16
Programmer-Defined Data Types
Enumerations
Mechanism for creating types whose literals are
identifiers
Each identifier associated with unique integer
17
Programmer-Defined Data Types
Also possible to specify explicit values to give
the enumerators
enum NumberBase { BINARY = 2,
OCTAL = 8,
DECIMAL = 10,
HEXADECIMAL = 16};
18