⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch4_main.cpp

📁 这个针对Essential C++这本书的代码
💻 CPP
字号:
/**************************************************
 * Essential C++ -- Stanley Lippman
 * Addison-Wesley 
 * ISBN 0-201-48518-4
 * homepage: www.objectwrite.com
 * email: slippman@objectwrite.com
 *************************************************/

#include <string>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

#include "stack.h"

class intBuffer {
public:
	// ...
private:
	// static const int _buf_size = 1024; // ok but not with VC++
	enum { _buf_size = 1024 };
    int _buffer[ _buf_size ];             // ok
};

intBuffer b1, b2;

class Triangular_iterator
{
public:
    Triangular_iterator( int index ) : _index( index-1 ){} //***

    bool operator==( const Triangular_iterator& ) const;
    bool operator!=( const Triangular_iterator& ) const;
    int  operator*() const;
    Triangular_iterator& operator++();       // prefix version
    Triangular_iterator  operator++( int );  // postfix version

private:
    void check_integrity() const;  
    int _index;
};


class Triangular {
	friend class Triangular_iterator;
public:
	Triangular( int len = 1, int bp = 1 ); 
	Triangular( const Triangular& );
	Triangular& operator=( const Triangular &rhs );

   int length()  const { return _length;  }
   int beg_pos() const { return _beg_pos; }
   int elem( int pos ) const;

   void length( int nlen ) { _length = nlen; }
   void beg_pos( int npos ){ _beg_pos = npos; }

   bool next( int &val ) const;
   void next_reset() const { _next = 1; }

   static bool is_elem( int );
   static void gen_elements( int length );
   static void gen_elems_to_value( int value );
   static void display( int length, int beg_pos, ostream &os = cout );

   typedef Triangular_iterator iterator;

   Triangular_iterator begin() const
        { return Triangular_iterator( _beg_pos ); }

   Triangular_iterator end() const
        { return Triangular_iterator( _beg_pos+_length ); }
 
private:
	int _length; 	// number of elements
	int _beg_pos; // beginning position of range
	mutable int _next;    // next element to iterate over

    // static const int   _max_elems = 1024; // ok, but not VC++
	enum { _max_elems = 1024 };
    static vector<int> _elems;
};

ostream&
operator<<( ostream &os, const Triangular &rhs )
{
    os << "( "
	    << rhs.beg_pos() << " , "
	    << rhs.length()  << " ) ";

    rhs.display( rhs.length(), rhs.beg_pos(), os );
    return os;
}

istream&
operator>>( istream &is, Triangular &rhs )
{
	char ch1, ch2;
	int bp, len;

   // given the input: ( 3 , 6 ) 6, 10, 15, 21, 28, 36 
   // ch1 == 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -