1 Main Index Conten ts 1 Main Index Conten ts Shifting blocks of elem ents… Model of a list object… Sample list The list ADT CLASS list Constructors CLASS list Operations (7 slides) CLASS list::iterator Operations Inserting an element in to a list Removing an element fro m a list Ordered lists Splicing two lists Summary Slides (5 slides) Chapter 6 Chapter 6 – – The List Container and Iterators The List Container and Iterators
23
Embed
Main Index Contents 11 Main Index Contents Shifting blocks of elements… Shifting blocks of elements… Model of a list object… Model of a list object… Sample.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1 Main IndexMain Index ContentsContents1 Main IndexMain Index ContentsContents
Shifting blocks of elements…Model of a list object…Sample listThe list ADTCLASS list ConstructorsCLASS list Operations (7 slides)CLASS list::iterator OperationsInserting an element into a listRemoving an element from a listOrdered listsSplicing two listsSummary Slides (5 slides)
Chapter 6 Chapter 6 – – The List Container and IteratorsThe List Container and Iterators
2 Main IndexMain Index ContentsContents
Shifting blocks of elements to Shifting blocks of elements to insert or delete a vector iteminsert or delete a vector item
15 20 30 35 40Initial V ec to r
30 3515 40
20
Eras e 20 atP o s itio n 1
S hift left0 4321
15 20 30 35 4025Ins ert 25 at
P o s itio n 2
S hift right
32
10 54
15 20 30 35 40Initial V ec to r
0 4321 210 3
3 Main IndexMain Index ContentsContents3 Main IndexMain Index ContentsContents
Model of a list object with links Model of a list object with links to next and previous elementto next and previous element
fro nt b ac k
4 Main IndexMain Index ContentsContents
Sample listSample list
Pasta Delectica
6 :1 5
J o n es ( 4 )
G o n zales ( 5 )
F r an k s ( 3 )
Bo u to n ( 6 )
L iu ( 2 )6 :0 0
5 Main IndexMain Index ContentsContents5 Main IndexMain Index ContentsContents
The List ADTThe List ADT The list API documents the member function
prototype as well as pre- and postconditions.– provides three constructors to declare a list object.
0 .00 .0 0 .00 .0 0 .00 .0 0 .00 .0(a) lis t< d o ub le> realL is t(8)
(c ) lis t< s tring> s trL is t(s trA rr, s trA rr+ 3)l is tve c to r
6 Main IndexMain Index ContentsContents6 Main IndexMain Index ContentsContents
CLASS list Constructors <list>
list();Create an empty list. This is the default constructor.
list(int n, const T&value = T());Create a list with n elements, each having a specified value. If the value argument is omitted, the elements
are filled with the default value for type T. Type T must have a default constructor, and the default value of type T is specified by the notation T().
list(T *first, T *last);Initialize the list, using the address range [first, last).
7 Main IndexMain Index ContentsContents7 Main IndexMain Index ContentsContents
CLASS list Operations <list>
T& back();Return the value of the item at the rear of the list. Precondition: The vector must contain at least one
element.
bool empty() const;Return true if the vector is empty, false otherwise.
T& front();Return the value of the item at the front of the list. Precondition: The vector must contain at least one
element.
8 Main IndexMain Index ContentsContents8 Main IndexMain Index ContentsContents
CLASS list Operations <list>
void push_back(const T& value);Add a value at the rear of the list. Postcondition: The list has a new element at the
rear, and its size increases by 1.
void pop_back();Remove the item at the rear of the list. Precondition: The list is not empty. Postcondition: The list has a new element at the rear
or is empty.
9 Main IndexMain Index ContentsContents9 Main IndexMain Index ContentsContents
CLASS list Operations <list>
void push_front(const T& value);Add a value at the front of the list. Postcondition: The list has a new element at the
front, and its size increases by 1.
void pop_front();Remove the item at the front of the list. Precondition: The list is not empty. Postcondition: The list has a new element at the front
or is empty.
int size() const;Return the number of elements in the vector.
10 Main IndexMain Index ContentsContents10 Main IndexMain Index ContentsContents
CLASS list Operations <list>
iterator begin();Returns an iterator that references the first position
(front) of the list. If the list is empty, the iterator value end() is returned.
const_iterator begin();Returns a const_iterator that points to the first position (front) of a constant list. If the list is empty, the
const_iterator value end() is returned.
iterator end();Returns an iterator that signifies a location immediately out of the range of actual elements. A program must
not dereference the value of end() with the * operator.
11 Main IndexMain Index ContentsContents11 Main IndexMain Index ContentsContents
CLASS list Operations <list>
iterator end();Returns an iterator that signifies a location immediately out of the range of actual elements. A program must
not dereference the value of end() with the * operator.
const_iterator end();Returns a const_iterator that signifies a location
immediately out of the range of actual elements in a constant list. A program must not dereference the value of end() with the * operator.
12 Main IndexMain Index ContentsContents12 Main IndexMain Index ContentsContents
CLASS list Operations <list>
void erase(iterator pos);Erase the element pointed to by pos.Precondition: The list is not empty.Postcondition: The list has one fewer element.
void erase(iterator first, iterator last);Erase all list elements within the iterator range [first,
last].Precondition: The list is not empty.Postcondition: The size of the list decreases by the
number of elements in the range.
13 Main IndexMain Index ContentsContents13 Main IndexMain Index ContentsContents
CLASS list Operations <list>
iterator insert(iterator pos, const T& value);Insert value before pos, and return an iterator pointing to the position of the new value in the list. The
operation does not affect any existing iterators.Postcondition: The list has a new element.
14 Main IndexMain Index ContentsContents14 Main IndexMain Index ContentsContents
CLASS list::iterator Operations <list>
*:Accesses the value of the item currently pointed to by the iterator.
*iter;*iter;
++: Moves the iterator to the next item in the list. iter++;iter++;
--: Moves the iterator to the previous item in the list.
iter--;iter--;
==: Takes two iterators as operands and returns truewhen they both point at the same item in the list.
iter1 == iter2iter1 == iter2
!=: Returns true when the two iterators do not point at the same item in the list.
iter1 != iter2iter1 != iter2
15 Main IndexMain Index ContentsContents15 Main IndexMain Index ContentsContents
Inserting an element into a listInserting an element into a list
fro nt
Lis t o b je c t (a fte r)
fro nt re a r
Lis t o b je c t (b e fo re )
ne w E ltre a r
ite r
2 55937 2 9374
ite r4
16 Main IndexMain Index ContentsContents
Removing an element from a listRemoving an element from a list
fro nt
Lis t o b je c t (a fte r)
fro nt re a r
Lis t o b je c t (b e fo re )
re a rite r
2 5937 2 593
ite r? ?
17 Main IndexMain Index ContentsContents17 Main IndexMain Index ContentsContents
Ordered listsOrdered lists8 27 46 0
fro nt re a r6 5
8 27 46 0fro ntre a r
5 0 8 27 46 5
fro nt re a rc u rr
6 06 5
5 0
B e fo re Ins e rt A fte r Ins e rt
Position the iterator curr at the front of the list.
Insert 50 in the list:
18 Main IndexMain Index ContentsContents18 Main IndexMain Index ContentsContents
Splicing two listsSplicing two lists
7 1 5 1 6 3 47 1 5 3 47 3 4
d e s tLis t
1 5 1 6
s o u rc e Ite r
s o u rc e Lis t p o s
5
d e s tLis t (A fte r ins e rt o f 1 5 )
1 5 1 6
s o u rc e Ite r
s o u rc e Lis t p o s
5
d e s tLis t (A fte r ins e rt o f 1 6 )
1 5 1 6
s o u rc e Ite r
s o u rc e Lis t p o s
5
19 Main IndexMain Index ContentsContents19 Main IndexMain Index ContentsContents
Summary Slide 1Summary Slide 1
§- list - A Sequence of elements stored by position.
- Index access is not available…§- to access the value of an element, must pass
through its preceding elements.
§- list iterator- A generalized pointer that moves through a list
element by element… forward or backward
- At any point, the * operator accesses the value of a list item.
20 Main IndexMain Index ContentsContents20 Main IndexMain Index ContentsContents
Summary Slide 2Summary Slide 2
§- The list class has two iterator types:1)1) iteratoriterator:
A generalized list traversal pointer.
2)2) constconst __ iteratoriterator:
must be used with a constant list object. Each type is a nested class of list and must be
accessed by using the scope operator ::::
21 Main IndexMain Index ContentsContents21 Main IndexMain Index ContentsContents
Summary Slide 3Summary Slide 3
§- the list member function begin()- Gives an iterator an initial value that points to the
first element.
§- the list member function end()- Returns an iterator pointing just past the last
element of the list.
22 Main IndexMain Index ContentsContents22 Main IndexMain Index ContentsContents
Summary Slide 4Summary Slide 4
§- The sequential search of a list object- implemented by using an iterator range
[firstfirst, lastlast).
- It returns an iterator that points at the target value or has value lastlast if the target is not in the list.
23 Main IndexMain Index ContentsContents23 Main IndexMain Index ContentsContents
Summary Slide 5Summary Slide 5
§- list class member fns insert() and erase()
- Both use an iterator argument to modify a list.
1)1) insert()insert(): places value in the list before the data
referenced by the iterator pospos.
2)2) erase()erase():removes the data item referenced by pospos from the list.