📄 ch4_main.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 + -