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

📄 dimkindex.cpp

📁 这是一个可以检索大量数据的程序
💻 CPP
字号:
#include "DimKIndex.h"

namespace bmi {

Dim2Index::Dim2Index()
{
	m_NextOid = 0;
	m_FreeOid = MAX_OBJECT;
}

Dim2Index::~Dim2Index()
{

}

OID Dim2Index::Add(KEY _x, KEY _y)
{
	if ( m_FreeOid <= 0) 
		return -1;
	--m_FreeOid;
	while(true)
	{
		if (m_NextOid >= MAX_OBJECT)
			m_NextOid = 0;
		if ( ! m_Bitset.test(m_NextOid) )
			break;
		++m_NextOid;
	}

	m_Bitset.set(m_NextOid, true);
	m_XIndex.Add(m_NextOid, _x);
	m_YIndex.Add(m_NextOid, _y);
	return (m_NextOid++);
}

OID Dim2Index::Add(KEY _x1, KEY _x2, KEY _y1, KEY _y2)
{
	if ( m_FreeOid <= 0) 
		return -1;
	--m_FreeOid;
	while(true)
	{
		if (m_NextOid >= MAX_OBJECT)
			m_NextOid = 0;
		if ( ! m_Bitset.test(m_NextOid) )
			break;
		++m_NextOid;
	}

	m_Bitset.set(m_NextOid, true);
	m_XIndex.Add(m_NextOid, _x1, _x2);
	m_YIndex.Add(m_NextOid, _y1, _y2);
	return (m_NextOid++);
}

void Dim2Index::Find(KEY _xDown, KEY _xUp, 
					 KEY _yDown, KEY _yUp, 
					 BITSET & bs)
{
	bs.reset();
	BITSET bsTmp;
	m_XIndex.Find(_xDown, _xUp, true, bsTmp);
	m_YIndex.Find(_yDown, _yUp, true, bs);
	bs.operator&=(bsTmp);
}

void Dim2Index::Del(OID _oid, KEY _x, KEY _y)
{
	++m_FreeOid;
	m_Bitset.set(_oid, false);
	m_XIndex.Del(_oid, _x);
	m_YIndex.Del(_oid, _y);
}

void Dim2Index::Del(OID _oid, KEY _x1, KEY _x2, KEY _y1, KEY _y2)
{
	++m_FreeOid;
	m_Bitset.set(_oid, false);
	m_XIndex.Del(_oid, _x1, _x2);
	m_YIndex.Del(_oid, _y1, _y2);
}

}

⌨️ 快捷键说明

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