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

📄 testmap.cc

📁 这是一款很好用的工具包
💻 CC
字号:
#include <new>#include <iostream>using namespace std;#include <stdlib.h>#include <math.h>#include <assert.h>#define srandom	srand48#define random	lrand48extern "C" {extern void srandom(long);extern long random(void);}#include "SArray.h"#include "LHash.h"#include "SArray.cc"#include "LHash.cc"#define PRINTN	20#define KEY_T	unsigned int#define DATA_T	int#if 0#define CLASS	LHash#define MAP_T	CLASS<KEY_T,DATA_T>#define ITER_T	LHashIter<KEY_T,DATA_T>#ifdef INSTANTIATE_TEMPLATESINSTANTIATE_LHASH(KEY_T, DATA_T);#endif#else#define CLASS	SArray#define MAP_T	CLASS<KEY_T,DATA_T>#define ITER_T	SArrayIter<KEY_T,DATA_T>#ifdef INSTANTIATE_TEMPLATESINSTANTIATE_SARRAY(KEY_T, DATA_T);#endif#endifstatic MAP_T myarray;int compKeys(KEY_T key1, KEY_T key2){	return key2 - key1;}voidprintmap(MAP_T &myarray){    cout << myarray.numEntries() << " distinct entries" << endl;    { 	int i;	ITER_T myiter(myarray);	KEY_T key;	DATA_T *value;	cout << PRINTN <<  " first keys:";	for (i = 0; i < PRINTN && myiter.next(key); i++) {	    cout << " " << key;	}	cout << endl;	cout << PRINTN <<  " first values:";	myiter.init();	for (i = 0; i < PRINTN && (value = myiter.next(key)); i++) {	    cout << " " << *value;	}	cout << endl;    }}int sortem(KEY_T k1, KEY_T k2) {	return k1 - k2;}intmain(int argc, char **argv){    int size = 10, delsize;    int i;    KEY_T key;    Boolean found;    char mapspace[sizeof(MAP_T)];    MemStats stats;    if (argc > 1) {	size = atoi(argv[1]);    }    delsize = size/2;    if (argc > 2) {	delsize = atoi(argv[2]);    }    cout << "sizeof(_Map) = " << sizeof(_Map) << endl;    cout << "sizeof(myarray) = " << sizeof(myarray) << endl;    cout << "inserting ..." << endl;    srandom(0);    for (i = 1; i <= size; i++) {	key = random();	*myarray.insert(key) = i;	// myarray.dump();	DATA_T val = *myarray.find(key);	assert(i == val);    }    cout << "checking ..." << endl;    srandom(0);    for (i = 1; i <= size; i++) {	key = random();	DATA_T *val = myarray.find(key);	assert (val != 0);	if (i != *val) {	    cout << "key " << key << " was overwritten with " << *val << endl;	}    }    printmap(myarray);    myarray.memStats(stats);    stats.print();    cout << "deleting ..." << endl;    /*     * now delete half the entries     */    srandom(0);    for (i = 1; i <= delsize; i++) {	key = random();	myarray.remove(key, found);	assert(found);    }    cout << "checking ..." << endl;    /*     * Check the result     */    srandom(0);    for (i = 1; i <= delsize; i++) {	key = random();	myarray.find(key,found);	assert(!found);    }    for (; i <= size; i++) {	key = random();	DATA_T *val = myarray.find(key);	if (val == 0) {	    cout << "key " << key << " was deleted" << endl;	} else if (i != *val) {	    cout << "key " << key << " was reassigned to " << *val << endl;	}    }    printmap(myarray);    stats.clear();    myarray.memStats(stats);    stats.print();    myarray.clear(0);    printmap(myarray);    /*     * Populate again     */    for (i = 1; i <= size; i++) {	key = i;	*myarray.insert(key) = i;    }    cerr << "numEntries = " << myarray.numEntries() << endl;    printmap(myarray);    /*     * Test copy/assignment     */    {	MAP_T *another_map;	another_map = new ((void *)mapspace) MAP_T(11);        cerr << "*** testing copy constructor ***\n";	MAP_T yet_another_map(myarray);        yet_another_map.remove(1);	printmap(yet_another_map);        cerr << "*** testing assignment operator ***\n";	yet_another_map = myarray;        yet_another_map.remove(1);	printmap(yet_another_map);    }    /*     * Delete all using iterator     */    ITER_T myiter(myarray);    //ITER_T myiter(myarray, sortem);        i = 0;    while (myiter.next(key)) {	myarray.remove(key);	i++;    }    cerr << "deleted " << i << " entries\n";    cerr << "numEntries = " << myarray.numEntries() << endl;    printmap(myarray);    exit(0);}

⌨️ 快捷键说明

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