Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Need help with all three questions #pragma once class SquareContainer { public: class iterator; // forward declaration friend class iterator; // friend declaration /*! @class

Need help with all three questions image text in transcribed

#pragma once

class SquareContainer {

public:

class iterator; // forward declaration

friend class iterator; // friend declaration

/*!

@class iterator

This is a nested class. Note that it is in the public section of

SquareContainer

*/

class iterator {

public:

/*!

Initializes the iterator by associating it with a

SquareContainer object, starting it at the beginning.

*/

iterator(SquareContainer* c, unsigned xloc = 0, unsigned yloc = 0) :

theContainer(c), x(xloc), y(yloc) {}

// You may need a copy constructor; we don't have it here

// iterator(const iterator& it);

// Prefix form of "next" operator

iterator operator++();

// Postfix form of "next"

iterator operator++(int);

// Returns the current item

int& operator*() const;

// Comparison operators

bool operator==(const iterator& rhs) const;

bool operator!=(const iterator& rhs) const;

private:

/*! Keep track of where we are in theContainer */

unsigned x, y;

/*! The SquareContainer object this iterator is associated with */

SquareContainer* theContainer;

};

//Returns iterator that refers to first item, using iterator constructor

iterator begin(void) { return iterator(this); }

const iterator end(void) { return iterator(this, 0, ySize); }

private:

static const unsigned xSize = 5;

static const unsigned ySize = 5;

int contents[xSize][ySize];

};

// Remember, we can't compile template classes separately, so we

// include it here and don't mention it on the command line.

1. Question: Look at the code in IteratorTest.cpp. What do you think it does? Compile the code (do you need to do anything "unusual" to get it to compile?) and run it. Does it do what you think it would? Take Away: Reminder of how to template class compilation, understanding of code. 2. Question: Why do the iterator increment operators return an iterator? How do the two increment operators differ? Is the iterator they return allocated dynamically, auto, or something else? - Take Away: What does it mean to return a reference to self (in this case, and, in general, remember, overloaded operators typically return self). 3. Interactive Coding and Question: Change SquareContainer::iterator::operator*() so that it is a const method. What is this supposed to mean? When you try to compile and run the program, what happens? Does this appear to be consistent with the declaration of that operator as const? Why or why not? In your opinion, should that operator be declared const? Take Away: Understanding of "const", when to use, and why to (or not to) use

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image_2

Step: 3

blur-text-image_3

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Data Management Databases And Organizations

Authors: Richard T. Watson

2nd Edition

0471180742, 978-0471180746

More Books

Students also viewed these Databases questions

Question

Factors Affecting Conflict

Answered: 1 week ago

Question

Describe the factors that lead to productive conflict

Answered: 1 week ago

Question

Understanding Conflict Conflict Triggers

Answered: 1 week ago