Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions...

29
Array basics Declaration Definition Assignment Multi- dimensional arrays Declaration Access Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stuff Arrays Comp Sci 1570 Introduction to C++

Transcript of Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions...

Page 1: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Arrays

Comp Sci 1570 Introduction to C++

Page 2: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Outline

1 Array basicsDeclarationDefinitionAssignment

2 Multi-dimensional arraysDeclarationAccessAssignment and access

3 Arrays as parameters to functionsMultidimensional arrays to functions

4 Sorting arrays

5 Random stuff

Page 3: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Outline

1 Array basicsDeclarationDefinitionAssignment

2 Multi-dimensional arraysDeclarationAccessAssignment and access

3 Arrays as parameters to functionsMultidimensional arrays to functions

4 Sorting arrays

5 Random stuff

Page 4: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Array declaration

• An array is a series of elements of the same type placed incontiguous memory locations that can be individuallyreferenced by adding an index to a unique identifier.

• That means that, for example, five values of type int canbe declared as an array without having to declare 5different variables (each with its own identifier).

• Instead, using an array, the five int values are stored incontiguous memory locations, and all five can be accessedusing the same identifier, with the proper index.

• For example, an array containing 5 integer values of typeint called foo could be represented as:

i n t f o o [ 5 ] ;

Page 5: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Outline

1 Array basicsDeclarationDefinitionAssignment

2 Multi-dimensional arraysDeclarationAccessAssignment and access

3 Arrays as parameters to functionsMultidimensional arrays to functions

4 Sorting arrays

5 Random stuff

Page 6: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Definition

i n t f o o [ 5 ] = { 16 , 2 , 77 , 40 , 12071 } ;

The number of values between braces shall not be greaterthan the number of elements in the array. For example, in theexample above, foo was declared having 5 elements (asspecified by the number enclosed in square brackets, []), andthe braces contained exactly 5 values, one for each element.

Page 7: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Fill remainder with 0’s

If declared with less, the remaining elements are set to theirdefault values (which for fundamental types, means they arefilled with zeroes). For example:

i n t bar [ 5 ] = { 10 , 20 , 30 } ;

Page 8: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Fill all with 0’s

The initializer can even have no values, just the braces:

i n t baz [ 5 ] = { } ;

Page 9: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Outline

1 Array basicsDeclarationDefinitionAssignment

2 Multi-dimensional arraysDeclarationAccessAssignment and access

3 Arrays as parameters to functionsMultidimensional arrays to functions

4 Sorting arrays

5 Random stuff

Page 10: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Assignment to and from arrays

For example, the following statement stores the value 75 in thethird element of foo:

f o o [ 2 ] = 7 5 ;

x = f o o [ 2 ] ;

and, for example, the above copies the value of the thirdelement of foo to a variable called x:

Page 11: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Initialize to data size

It is possible to declare an array and initialize it with asequence of elements, but no size specified:

double c o l l e c t i o n [ ] = { 1 . 0 , 3 . 5 , 0 . 5 , 7 . 2 } ;

Page 12: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Outline

1 Array basicsDeclarationDefinitionAssignment

2 Multi-dimensional arraysDeclarationAccessAssignment and access

3 Arrays as parameters to functionsMultidimensional arrays to functions

4 Sorting arrays

5 Random stuff

Page 13: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Indexing in multidimensional arrays

Page 14: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Outline

1 Array basicsDeclarationDefinitionAssignment

2 Multi-dimensional arraysDeclarationAccessAssignment and access

3 Arrays as parameters to functionsMultidimensional arrays to functions

4 Sorting arrays

5 Random stuff

Page 15: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Declaration

i n t jimmy [ 3 ] [ 5 ] ;

Page 16: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Outline

1 Array basicsDeclarationDefinitionAssignment

2 Multi-dimensional arraysDeclarationAccessAssignment and access

3 Arrays as parameters to functionsMultidimensional arrays to functions

4 Sorting arrays

5 Random stuff

Page 17: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Access

cout << jimmy [ 1 ] [ 3 ] ;

Page 18: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Outline

1 Array basicsDeclarationDefinitionAssignment

2 Multi-dimensional arraysDeclarationAccessAssignment and access

3 Arrays as parameters to functionsMultidimensional arrays to functions

4 Sorting arrays

5 Random stuff

Page 19: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Assignment and access

const i n t WIDTH 5const i n t HEIGHT 3i n t jimmy [ HEIGHT ] [ WIDTH ] ;i n t n ,m;

i n t main ( ){

f o r ( n=0; n < HEIGHT ; n++)f o r (m=0; m < WIDTH; m++){

jimmy [ n ] [m]=( n+1)∗(m+1);}

}

Page 20: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Multidimensional array options

Two-dimensional arrays with initializer lists can omit (only) theleftmost length specification:

i n t a r r a y [ ] [ 5 ] ={{ 1 , 2 , 3 , 4 , 5 } ,{ 6 , 7 , 8 , 9 , 10 } ,{ 11 , 12 , 13 , 14 , 15 }} ;

Page 21: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Multidimensional array options

NOT OK. The compiler can do the math to figure out whatthe array length is. However, the following is not allowed:

i n t a r r a y [ ] [ ] ={{ 1 , 2 , 3 , 4 } ,{ 5 , 6 , 7 , 8 }} ;

Page 22: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Outline

1 Array basicsDeclarationDefinitionAssignment

2 Multi-dimensional arraysDeclarationAccessAssignment and access

3 Arrays as parameters to functionsMultidimensional arrays to functions

4 Sorting arrays

5 Random stuff

Page 23: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Arrays as parameters to functions

• In C++, we don’t want to pass the entire block ofmemory represented by an array to a function directly asan argument.

• But what can be passed instead is its address.

• In practice, this has almost the same effect, and it is amuch faster and more efficient operation.

void p r o c e d u r e ( i n t ar g [ ] )

i n t main ( ){

i n t myarray [ 4 0 ] ;p r o c e d u r e ( myarray ) ;

. . .

Page 24: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Outline

1 Array basicsDeclarationDefinitionAssignment

2 Multi-dimensional arraysDeclarationAccessAssignment and access

3 Arrays as parameters to functionsMultidimensional arrays to functions

4 Sorting arrays

5 Random stuff

Page 25: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Multidimensional arrays to functions

Notice that the first brackets [] are left empty, while thefollowing ones specify sizes for their respective dimensions.Including the other dimensions is necessary in order for thecompiler to be able to determine the depth of each additionaldimension.

void p r o c e d u r e ( i n t myarray [ ] [ 3 ] [ 4 ] ) ;

Page 26: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Outline

1 Array basicsDeclarationDefinitionAssignment

2 Multi-dimensional arraysDeclarationAccessAssignment and access

3 Arrays as parameters to functionsMultidimensional arrays to functions

4 Sorting arrays

5 Random stuff

Page 27: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

See code demos

Bubble, selection, insertion

Page 28: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

Outline

1 Array basicsDeclarationDefinitionAssignment

2 Multi-dimensional arraysDeclarationAccessAssignment and access

3 Arrays as parameters to functionsMultidimensional arrays to functions

4 Sorting arrays

5 Random stuff

Page 29: Declaration Assignment Arrays...Assignment and access Arrays as parameters to functions Multidimensional arrays to functions Sorting arrays Random stu Arrays as parameters to functions

Array basics

Declaration

Definition

Assignment

Multi-dimensionalarrays

Declaration

Access

Assignment andaccess

Arrays asparameters tofunctions

Multidimensionalarrays tofunctions

Sorting arrays

Random stuff

More tips on PRNG

Please see code from day on random number generators, sinceit has been updated with some new tricks.