亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ch3_main.cpp

?? c編譯器詞法分析程序源碼
?? CPP
字號:
/**************************************************
 * Essential C++ -- Stanley Lippman
 * Addison-Wesley 
 * ISBN 0-201-48518-4
 * homepage: www.objectwrite.com
 * email: slippman@objectwrite.com
 *************************************************/

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

// globals as convenience for executing procedures
const int int_size = 12;
const int string_size = 4;
const int int_not_present = 1024;

int    ia[int_size]    = { 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 };
string sa[string_size] = { "pooh", "piglet", "eeyore", "tigger" };

vector<int> ivec( ia, ia+int_size );
vector<string> svec( sa, sa+string_size );

// iterative versions of find() in Section 3.1
const int* find_ver1( const vector<int> &vec, int value )
{
    for ( int ix = 0; ix < vec.size(); ++ix )
   if ( vec[ ix ] == value )
        return &vec[ ix ];
    return 0;
} 

template <typename elemType>
const elemType* 
find_ver2( const vector<elemType> &vec, 
           const elemType &value )
{
    for ( int ix = 0; ix < vec.size(); ++ix )
          if ( vec[ ix ] == value )
               return &vec[ ix ];

    return 0;
}

template <typename elemType>
inline const elemType* 
begin( const vector<elemType> &vec )
	 { return vec.empty() ? 0 : &vec[0]; }

template <typename elemType>
inline const elemType* 
end(  const vector<elemType> &vec )
	{ return vec.empty() ? 0 : &vec[vec.size()]; }

template <typename elemType>
const elemType* 
find_ver3( const elemType *array, int size, 
           const elemType &value )
{
	if ( ! array || size < 1 )
         return 0;

   for ( int ix = 0; ix < size; ++ix )
			// we can apply subscript operator to pointer
         if ( array[ ix ] == value )
              return &array[ ix ];

   return 0; // value not found
}

template <typename elemType>
const elemType* 
find_ver4( const elemType *array, int size, 
           const elemType &value )
{
	if ( ! array || size < 1 ) return 0;

   // ++array increments array by one elememt
   for ( int ix = 0; ix < size; ++ix, ++array )
         // *array dereferences the address
         if ( *array == value )
              return array;
   return 0;
}

template <typename elemType>
const elemType* 
find_ver5( const elemType *first, 
           const elemType *last, const elemType &value )
{
	if ( ! first || ! last )
        return 0;

   // while first does not equal last,
   // compare value with element addressed by first 
   // if the two are equal, return first
   // otherwise, increment first to address next element

   for ( ; first != last; ++first )
         if ( *first == value )
              return first;

   return 0;
}

// Section 3.2 version of find
template <typename IteratorType, typename elemType >
IteratorType 
find_ver6( IteratorType first, IteratorType last, 
           const elemType &value )
{
	for ( ; first != last; ++first )
		  if ( value == *first )
               return first;

   return last;
}

void prog_find_vers()
{
    const int *iptr = find_ver1( ivec, ivec[2] );
	if ( iptr != &ivec[2] )
		 cerr << "?? find_ver1 failed!\n";
	else cerr << "!! find_ver1 ok!\n";

	const string* sptr = find_ver2( svec, svec[2] );
	if ( sptr != &svec[2] )
		 cerr << "?? find_ver2 failed with string!\n";
	else cerr << "!! find_ver2 ok with string!\n";

	iptr = find_ver2( ivec, ivec[2] );
	if ( iptr != &ivec[2] )
		 cerr << "?? find_ver2 failed with int!\n";
	else cerr << "!! find_ver2 ok with int!\n";

	iptr = find_ver3( ia, int_size, ia[2] );
	if ( iptr != &ia[2] )
		 cerr << "?? find_ver3 failed with int array!\n";
	else cerr << "!! find_ver3 ok with int array!\n";

	sptr = find_ver3( sa, string_size, sa[2] );
	if ( sptr != &sa[2] )
		 cerr << "?? find_ver3 failed with string array!\n";
	else cerr << "!! find_ver3 ok with string array!\n";

	iptr = find_ver4( begin( ivec ), ivec.size(), ivec[2] );
	if ( iptr != &ivec[2] )
		 cerr << "?? find_ver4 failed with int vector!\n";
	else cerr << "!! find_ver4 ok with int vector!\n";

	sptr = find_ver4( begin( svec ), svec.size(), svec[2] );
	if ( sptr != &svec[2] )
		 cerr << "?? find_ver4 failed with string vector!\n";
	else cerr << "!! find_ver4 ok with string vector!\n";

	sptr = find_ver5( sa, sa+string_size, sa[2] );
	if ( sptr != &sa[2] )
		 cerr << "?? find_ver5 failed with string array!\n";
	else cerr << "!! find_ver5 ok with string array!\n";

	iptr = find_ver5( begin( ivec ), end( ivec ), ivec[2] );
	if ( iptr != &ivec[2] )
		 cerr << "?? find_ver5 failed with int vector!\n";
	else cerr << "!! find_ver5 ok with int vector!\n";

	iptr = find_ver5( begin( ivec ), end( ivec ), int_not_present );
	if ( iptr != 0 )
		 cerr << "?? find_ver5 failed with int not present in vector!\n";
	else cerr << "!! find_ver5 ok with int not present in vector!\n";

	sptr = find_ver6( sa, sa+string_size, sa[2] );
	if ( sptr != &sa[2] )
		 cerr << "?? find_ver6 failed with string array and iterators!\n";
	else cerr << "!! find_ver3 ok with string array and iterators!\n";

	vector< int >::iterator it;	
	it = find_ver6(  ivec.begin(), ivec.end(), ivec[2] );
	if ( *it != ivec[2] )
		 cerr << "?? find_ver6 failed with int vector and iterators!\n";
	else cerr << "!! find_ver4 ok with int vector and iterators!\n";
}

// from Section 3.6: How to Design a Generic Algorithm

vector<int> 
less_than_10( const vector<int> &vec )
{
    vector<int> nvec;
    for ( int ix = 0; ix < vec.size(); ++ix )
          if ( vec[ ix ] < 10 )
               nvec.push_back( vec[ ix ] );
    return nvec;
}

bool less_than( int v1, int v2 ) 
     { return v1 < v2 ? true : false; }

bool greater_than( int v1, int v2 ) 
     { return v1 > v2 ? true : false; }

vector<int> 
filter_ver1( const vector<int> &vec, 
             int filter_value, 
             bool (*pred)( int, int ))
{
    vector<int> nvec;

    for ( int ix = 0; ix < vec.size(); ++ix )
          // invokes the function addressed by pred
          // tests element vec[ix] against filter_value
          if ( pred( vec[ ix ], filter_value ))
               nvec.push_back( vec[ ix ] );

    return nvec;
}

vector<int> 
filter_ver2( const vector<int> &vec, 
             int val, less<int> &lt )
{
    vector<int> nvec;
    vector<int>::const_iterator iter = vec.begin();
    
    // bind2nd( less<int>, val )
    // binds val to the second value of less<int>
    // less<int> now compares each value against val

    while (( iter = 
             find_if( iter, vec.end(), 
                      bind2nd( lt, val ))) != vec.end() )
    {
             // each time iter != vec.end(), 
             // iter addresses an element less than val
             nvec.push_back( *iter );
             iter++;
    }
    return nvec;
}

template <typename InputIterator, typename OutputIterator,
		  typename ElemType,      typename Comp>
OutputIterator 
filter_ver3( InputIterator first, InputIterator last,
             OutputIterator at,   const ElemType &val, Comp pred )
{
    while (( first = 
             find_if( first, last, 
                      bind2nd( pred, val ))) != last )
             // assign value, then advance both iterators
             *at++ = *first++;
    return at;
}

vector<int> sub_vec( const vector<int> &vec, int val )
{ 
    vector<int> local_vec( vec );
    sort( local_vec.begin(), local_vec.end() );

    vector<int>::iterator iter =
          find_if( local_vec.begin(), 
                   local_vec.end(),
                   bind2nd( greater<int>(), val ));

    local_vec.erase( iter, local_vec.end() );
    return local_vec;
}

void prog_filter_vers()
{
	const int solution_size = 6;

    vector<int> local_vec = less_than_10( ivec );
	if ( local_vec.size() != solution_size )
		 cerr << "?? less_than_10 failed! expected expected "
		      << solution_size << ", received: " 
		      << local_vec.size() << endl;
	else cerr << "!! less_than_10 ok!\n";

	const int partition_value = 10;
	local_vec = filter_ver1( ivec, partition_value, greater_than );

	if ( local_vec.size() != solution_size )
		 cerr << "?? filter_ver1 failed! expected expected "
		      << solution_size << ", received: "  
		      << local_vec.size() << endl;
	else cerr << "!! filter_ver1 ok!\n";

	local_vec = filter_ver2( ivec, partition_value, less<int>() );
	if ( local_vec.size() != solution_size )
		 cerr << "?? filter_ver2 failed! expected "
		      << solution_size << ", received: " 
		      << local_vec.size() << endl;
	else cerr << "!! filter_ver2 ok!\n";

    // unless we use an iserter, must provide a sized container
	// within which filter can assign the values ...
	int ia2[ solution_size ];
	filter_ver3( ia, ia+int_size, ia2, partition_value, less<int>() );

	int err_cnt = 0;
	for ( int ix = 0; ix < solution_size; ++ix )
		  if ( ia[ ix ] != ia2[ ix ] )
			   ++err_cnt;

	if ( err_cnt )
		 cerr << "?? filter_ver3 failed for array! "
		      << err_cnt << " unexpected values\n";
	else cerr << "!! filter_ver3 for array ok!\n";

	vector<int> ivec2( solution_size );
	filter_ver3( ivec.begin(), ivec.end(), ivec2.begin(), 
                 partition_value, greater<int>() );

	err_cnt = 0;
	ix = solution_size;

	for ( int iy = 0; ix < ivec.size(); ++ix, ++iy )
		  if ( ivec[ ix ] != ivec2[ iy ] )
			   ++err_cnt;

	if ( err_cnt )
		 cerr << "?? filter_ver3 failed for vector! "
		      << err_cnt << " unexpected values\n";
	else cerr << "!! filter_ver3 for vector ok!\n";

	// illustrate using an inserter
	vector<int> ivec3;
	filter_ver3( ivec.begin(), ivec.end(), back_inserter( ivec3 ), 
                 partition_value, greater<int>() );

	if ( ivec3.size() != solution_size )
		 cerr << "?? filter_ver3 with back inserter failed! expected "
		      << solution_size << ", received: " 
		      << ivec3.size() << endl;
	else cerr << "!! filter_ver3 with back inserter ok!\n";

	ivec3 = sub_vec( ivec, partition_value );
	if ( ivec3.size() != solution_size )
		 cerr << "?? sub_vec failed! expected "
		      << solution_size << ", received: " 
		      << ivec3.size() << endl;
	else cerr << "!! sub_vec ok!\n";
}

// Section 3.10 iostream_iterator examples	

void prog_io_std()
{
	cout << "please enter some text, then indicate end of file!\n";

	istream_iterator< string > is( cin );
	istream_iterator< string > eof;

    vector< string > text;
    copy( is, eof, back_inserter( text ));

	sort( text.begin(), text.end() );

	ostream_iterator<string> os( cout, " " );
    copy( text.begin(), text.end(), os );
}


void prog_io_fil()
{
   ifstream in_file( "input_file.txt" );
   ofstream out_file( "output_file.txt" );

   if ( ! in_file || ! out_file ) {
        cerr << "?? unable to open the necessary files.\n";
		return;
   } 
   else cerr << "!! ok: input and output files opened!\n";

   istream_iterator< string > is( in_file );
   istream_iterator< string > eof;

   vector< string > text;
   copy( is, eof, back_inserter( text ));

   if ( text.empty() )
	    cerr << "?? iostream iterators failed: string vector empty!\n";
   else cerr << "!! iostream iterators seem to work: "
             << text.size() << " strings read in!\n";

   sort( text.begin(), text.end() );

   ostream_iterator<string> os( out_file, " " );
   unique_copy( text.begin(), text.end(), os );
}

void prog_io_iters()
{
	// prog_io_std();
	prog_io_fil();
}

int main()
{
	cerr << "About to execute prog_find_vers()\n\n";
	prog_find_vers();

	cerr << "\n\nAbout to execute prog_filter_vers()\n\n";
    prog_filter_vers();

	cerr << "\n\nAbout to execute prog_io_iters()\n\n";
	prog_io_iters();

	cerr << "\n\nOk -- done!\n\n";
	return 0; // quiet vc6++
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲v日本v欧美v久久精品| 91精品国产麻豆国产自产在线| 久久精品欧美一区二区三区不卡| 麻豆久久一区二区| 久久色视频免费观看| 久久99精品一区二区三区| 久久久精品国产免大香伊| 成人高清视频在线| 亚洲免费视频成人| 欧美午夜精品一区二区蜜桃| 午夜视黄欧洲亚洲| 精品国产乱码久久久久久久久 | 亚洲精品国久久99热| 日本道色综合久久| 青青草国产精品97视觉盛宴| 久久影视一区二区| 91视频com| 日韩 欧美一区二区三区| 亚洲综合成人网| 欧美一区二区视频在线观看2022| 久久99热狠狠色一区二区| 国产精品国产三级国产普通话蜜臀| 97久久精品人人澡人人爽| 亚洲电影视频在线| 亚洲国产精品ⅴa在线观看| 日本韩国欧美一区| 久久99久久精品| 亚洲三级在线看| 欧美成人伊人久久综合网| 国产高清不卡二三区| 一区二区在线观看视频| 精品久久国产字幕高潮| 91天堂素人约啪| 精品一区二区日韩| 一个色综合av| 国产午夜精品久久久久久久| 在线亚洲+欧美+日本专区| 国模无码大尺度一区二区三区| 国产精品久久影院| 日韩免费视频一区二区| 色哟哟一区二区| 国产资源精品在线观看| 亚洲电影在线播放| 国产精品入口麻豆原神| 欧美一级xxx| 一本一道综合狠狠老| 国产老女人精品毛片久久| 亚洲成a人v欧美综合天堂下载| 国产欧美日韩在线视频| 91麻豆精品国产91久久久久久久久 | 91精品福利视频| 国产在线播放一区三区四| 亚洲永久免费视频| 中文字幕乱码日本亚洲一区二区 | 欧美一级二级三级蜜桃| 在线国产电影不卡| 91同城在线观看| av一区二区三区黑人| 国产91精品入口| 国产毛片精品国产一区二区三区| 天天免费综合色| 亚洲bdsm女犯bdsm网站| 亚洲精品国产无套在线观| 亚洲欧洲国产日本综合| 国产日韩精品一区二区三区| 精品久久久久一区二区国产| 欧美一级精品大片| 91精品视频网| 制服丝袜激情欧洲亚洲| 欧美日韩在线三级| 欧美高清视频不卡网| 欧美日韩中字一区| 欧美日本一区二区三区| 欧美三级欧美一级| 欧美老人xxxx18| 91精品国产色综合久久不卡蜜臀| 欧美电影影音先锋| 日韩视频一区二区三区在线播放| 日韩一区二区三区免费观看| 日韩一区二区三区在线| 日韩一区二区精品葵司在线| 日韩欧美一级二级三级| 久久婷婷色综合| 日本一区二区不卡视频| 亚洲视频每日更新| 亚洲激情成人在线| 亚洲成人在线观看视频| 日韩电影一区二区三区四区| 日本一不卡视频| 黑人巨大精品欧美一区| 国产一区二区视频在线| 成人精品在线视频观看| 色综合久久久久| 欧美日韩成人激情| 精品国产91洋老外米糕| 久久精品视频免费观看| 中文字幕亚洲欧美在线不卡| 亚洲精品一卡二卡| 亚洲国产成人高清精品| 久久精品久久综合| 成人激情免费电影网址| 色av一区二区| 日韩精品一区二区三区视频在线观看 | 日韩亚洲欧美综合| 久久久91精品国产一区二区精品 | 国产亚洲精品超碰| 一区二区三区精品在线观看| 午夜国产精品一区| 国产成人啪午夜精品网站男同| 99久久久无码国产精品| 欧美日韩国产综合一区二区三区| 欧美xxxxx牲另类人与| 综合精品久久久| 免费观看一级欧美片| 成人国产视频在线观看 | 精品少妇一区二区三区日产乱码 | 夜夜亚洲天天久久| 另类小说欧美激情| 91麻豆国产自产在线观看| 这里是久久伊人| 国产精品国产三级国产有无不卡 | 亚洲男人的天堂在线aⅴ视频 | 玉米视频成人免费看| 久久se这里有精品| 色狠狠一区二区三区香蕉| 欧美电影免费观看高清完整版在线 | 国产精品大尺度| 丝袜美腿亚洲一区| 99亚偷拍自图区亚洲| 精品久久久久久久久久久久久久久 | 欧美影视一区在线| 国产欧美精品一区| 日韩精彩视频在线观看| 波多野结衣中文字幕一区二区三区| 欧美一区二区三区色| 亚洲九九爱视频| 国产成人av福利| 精品日韩av一区二区| 亚洲第一主播视频| 91免费精品国自产拍在线不卡| 日韩欧美国产一二三区| 午夜欧美大尺度福利影院在线看| 成人福利视频网站| 欧美—级在线免费片| 国内精品在线播放| 欧美一区二区三区公司| 亚洲一区二区三区精品在线| heyzo一本久久综合| 久久久久久一级片| 久久国产尿小便嘘嘘尿| 欧美精品久久99久久在免费线 | 精品国产区一区| 日韩av中文字幕一区二区三区| 91蝌蚪porny| 亚洲色图20p| 一本大道久久a久久精品综合| 国产三级久久久| 国产成人亚洲综合a∨婷婷图片| 日韩女同互慰一区二区| 麻豆精品新av中文字幕| 91精品欧美综合在线观看最新| 亚洲va韩国va欧美va| 欧美亚洲高清一区| 亚洲一区二区在线播放相泽| 成人动漫av在线| 亚洲欧洲韩国日本视频| 91天堂素人约啪| 一区二区三区久久| 欧美三级电影在线看| 亚洲第一搞黄网站| 7777精品伊人久久久大香线蕉的 | 精品一区二区精品| 精品国产乱码久久久久久夜甘婷婷| 久久国产精品99久久人人澡| 日韩亚洲欧美一区二区三区| 捆绑变态av一区二区三区| 精品国产乱码久久久久久图片 | av在线综合网| 一区二区高清视频在线观看| 欧美在线一区二区三区| 日韩不卡一二三区| 国产亚洲综合在线| aaa亚洲精品一二三区| 亚洲精品精品亚洲| 91麻豆精品国产无毒不卡在线观看| 日韩国产高清影视| 久久久久久久久久久久久久久99 | 精品视频免费在线| 美女一区二区视频| 日本一区二区三区四区| 97se亚洲国产综合在线| 香蕉加勒比综合久久| 亚洲精品一区二区三区福利| 国产成人8x视频一区二区| 一区二区在线看| 精品国产乱码久久久久久老虎 | 色婷婷av一区二区三区gif | 久久aⅴ国产欧美74aaa| 国产精品色眯眯| 欧美军同video69gay|