#include<stdio.h>
#include<set>
using std::set;
//【假定int就是32位,longlong就是64位。】
//支持点计数操作。
//boolspace利用了索引查找和二叉查找(set)。
class boolspace
{
private:
class booltree
{
private:
long long join(int a, int b) {
int joiner[2] = {
a,b }; return *(long long*)joiner; }
private:
set<long long>tree;
public:
void clrup(void) {
tree.clear(); }
int operator()(int x, int y) {
if (tree.find(join(x, y)) == tree.end()) {
return 0; } else return 1; }//返回值:bool值,用int传递。//a-x,b-y。
int operator()(int x, int y, int as)//设为【(bool)as】//返回值:bool增减的数量。
{
if (as != 0)return tree.insert(join(x, y)).second;
else{
auto it = tree.find(join(x, y));
if (it == tree.end())return 0
c++:set库的应用:维护一个二维bool空间
最新推荐文章于 2023-06-14 00:10:08 发布