home *** CD-ROM | disk | FTP | other *** search
- //: C21:CalcInventory.cpp
- // From Thinking in C++, 2nd Edition
- // Available at http://www.BruceEckel.com
- // (c) Bruce Eckel 1999
- // Copyright notice in Copyright.txt
- // More use of for_each()
- #include "Inventory.h"
- #include "PrintSequence.h"
- #include <vector>
- #include <algorithm>
- using namespace std;
-
- // To calculate inventory totals:
- class InvAccum {
- int quantity;
- int value;
- public:
- InvAccum() : quantity(0), value(0) {}
- void operator()(const Inventory& inv) {
- quantity += inv.getQuantity();
- value += inv.getQuantity() * inv.getValue();
- }
- friend ostream&
- operator<<(ostream& os, const InvAccum& ia) {
- return os << "total quantity: "
- << ia.quantity
- << ", total value: " << ia.value;
- }
- };
-
- int main() {
- vector<Inventory> vi;
- generate_n(back_inserter(vi), 15, InvenGen());
- print(vi, "vi");
- InvAccum ia = for_each(vi.begin(),vi.end(),
- InvAccum());
- cout << ia << endl;
- } ///:~
-