/*
* File: foreach.h
* ---------------
* This file defines the foreach
keyword, which implements
* a substitute for the range-based for
loop from C++11.
* All iterable classes in the Stanford libraries import this file, so
* clients don't ordinarily need to do so explicitly. This version of
* foreach
also supports C++ strings and arrays.
*/
#ifndef _foreach_h
#define _foreach_h
/*
* Statement: foreach
* Usage: foreach (type var in collection) { ... }
* -----------------------------------------------
* The foreach
statement steps through the elements in
* a collection. It works correctly with the collection classes in
* both the Standard Template Library and the Stanford C++ libraries,
* but can also be used with C++ strings and statically initialized
* arrays.
*
*
The following code, for example, prints every element in the
* string vector lines
:
*
*
* foreach (string str in lines) {
* cout << str << endl;
* }
*
*
* Similarly, the following function calculates the sum of the character
* codes in a string:
*
*
* int sumCharacterCodes(string str) {
* int sum = 0;
* foreach (char ch in str) sum += ch;
* return sum;
* }
*
*
* As a simplification when iterating over maps, the foreach
* macro iterates through the keys rather than the key/value pairs.
*/
/* Private section */
/**********************************************************************/
/* Note: Everything below this point in the file is logically part */
/* of the implementation and should not be of interest to clients. */
/**********************************************************************/
#include
#include