コード例 #1
0
ファイル: egvt.cpp プロジェクト: vtsozik/methods
void EigenVectors::InitArray(DArray &darr, int size) const {
    if(!darr.empty()) {
        darr.clear();
    }
    darr.reserve(size);
    for(int i = 0; i < size; ++i) {
        darr.push_back(0.);
    }
}
コード例 #2
0
ファイル: darray.cpp プロジェクト: amoylel/crisscross
int TestDArray()
{
	DArray<int> *darray = new DArray<int>();

	size_t pos;
	pos = darray->insert(1);
	TEST_ASSERT(darray->valid(pos));
	TEST_ASSERT(darray->get(pos) == 1);
	pos = darray->insert(3);
	TEST_ASSERT(darray->valid(pos));
	TEST_ASSERT(darray->get(pos) == 3);
	pos = darray->insert(5);
	TEST_ASSERT(darray->valid(pos));
	TEST_ASSERT(darray->get(pos) == 5);
	pos = darray->insert(7);
	TEST_ASSERT(darray->valid(pos));
	TEST_ASSERT(darray->get(pos) == 7);

	TEST_ASSERT(darray->used() == 4);
	TEST_ASSERT(darray->get(0) == 1);
	TEST_ASSERT(darray->get(3) == 7);
	TEST_ASSERT(darray->get(1) == 3);
	TEST_ASSERT(darray->valid(0));
	TEST_ASSERT(darray->valid(1));
	TEST_ASSERT(darray->valid(2));
	TEST_ASSERT(darray->valid(3));
	TEST_ASSERT(!darray->valid((unsigned int)-1));
	TEST_ASSERT(!darray->valid(4));
	darray->remove(0);
	TEST_ASSERT(darray->used() == 3);
	TEST_ASSERT(!darray->valid(0));
	TEST_ASSERT(darray->valid(1));
	TEST_ASSERT(darray->get(1) == 3);
	TEST_ASSERT(darray->get(3) == 7);
	darray->remove(3);
	TEST_ASSERT(darray->used() == 2);
	TEST_ASSERT(!darray->valid(0));
	TEST_ASSERT(darray->valid(1));
	TEST_ASSERT(darray->valid(2));
	TEST_ASSERT(!darray->valid(3));
	TEST_ASSERT(darray->get(1) == 3);
	TEST_ASSERT(darray->get(2) == 5);
	darray->empty();
	TEST_ASSERT(darray->used() == 0);

	delete darray;

	return 0;
}
コード例 #3
0
ファイル: main.cpp プロジェクト: DanLinder/crisscross
void TestTree(T _tree, DArray<ktype_t> *dataset, unsigned long _size)
{
	console->Write("%10lu ", _size);
	
	// fill tree
	Stopwatch sw;
	sw.Start();
	for (size_t i = 0; i < _size; i++) {
		ktype_t item = dataset->get(i);
		_tree->insert(item, item);
	}
	sw.Stop();
	console->Write("%9.5lfs ", sw.Elapsed());
	
	DArray<ktype_t> searchItems;
	
	// create valid item list
	searchItems.empty();
	while (searchItems.used() < MaxSearches) {
		unsigned long idx = RandomNumber() % _size;
		searchItems.insert(dataset->get(idx));
	}
	
	// successful searches
	sw.Start();
	for (size_t i = 0; i < MaxSearches; i++) {
		_tree->find(searchItems[i], 0);
	}
	sw.Stop();
	console->Write("%9.5lfs ", sw.Elapsed());
	
	// create mixed item list
	searchItems.empty();
	while (searchItems.used() < MaxSearches) {
		unsigned long idx;
		
		idx = RandomNumber() % _size;
		searchItems.insert(dataset->get(idx));
		
		idx = _size + (RandomNumber() % _size);
		searchItems.insert(dataset->get(idx));
	}
	
	// mixed success searches
	sw.Start();
	for (size_t i = 0; i < MaxSearches; i++) {
		_tree->find(searchItems[i], 0);
	}
	sw.Stop();
	console->Write("%9.5lfs ", sw.Elapsed());
	
	// create invalid item list
	searchItems.empty();
	while (searchItems.used() < MaxSearches) {
		unsigned long idx = _size + (RandomNumber() % _size);
		searchItems.insert(dataset->get(idx));
	}
	
	// invalid searches
	sw.Start();
	for (size_t i = 0; i < MaxSearches; i++) {
		_tree->find(searchItems[i], 0);
	}
	sw.Stop();
	console->Write("%9.5lfs ", sw.Elapsed());

	// empty tree
	sw.Start();
	_tree->empty();
	sw.Stop();
	console->WriteLine("%9.5lfs", sw.Elapsed());
}