专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »算法 » javascript闭包:数据库闭包算法的实现方法 »正文

javascript闭包:数据库闭包算法的实现方法

来源: 发布时间:星期四, 2009年2月12日 浏览:42次 评论:0


其实实现这样个数据库数据结构标准库真是方便啊以来来看看吧提供 www. !
头文件:

/**//******************************************
closure.h
headerfile
byGrape
******************************************/
#ndef_CLOSURE_H
#_CLOSURE_H

#<>
#<iostream>
#<vector>

/**//*FunctionDependence.
*theform:leftAtt->rightAtt.
*lsize:thelengthofleftAtt.
*/
FD...{
public:
//InitFDwithleftAttandrightAtt.
FD(std::l,std::r)...{
//SHOULDchecktheattributestheyare.
leftAtt=l;
rightAtt=r;
lsize=leftAtt.size;
}
//displaytheFD.
voidpr(void)const...{std::cout<<leftAtt<<\"->\"<<rightAtt<<std::endl;}

//getlengthofleftattribute
std::::size_typegetCount(void)...{lsize;}

voidminusCount(void)...{--lsize;}

//getleftattribute.
std::getLeftAtt(void)...{leftAtt;}
//getrightattribute.
std::getRightAtt(void)...{rightAtt;}

private:
std::leftAtt;
std::rightAtt;
std::::size_typelsize;
};


#end

源文件:

/**//******************************************
closure.cpp
sourcefile
byGrape
******************************************/
#<iostream>
#<map>
#<> [Page]
#<utility>

#\"closure.h\"

usingstd;

...{

/**//////////////////////////////////////////////////////////////////////////////
//inputarea:alltheFunctionDependence//

FDfd=...{FD(\"a\",\"d\"),FD(\"ab\",\"e\"),FD(\"bi\",\"e\"),FD(\"cd\",\"i\"),FD(\"e\",\"c\")};
/**//////////////////////////////////////////////////////////////////////////////

multimap<char,FD>mm;//themultimapcontainsalloftheFDied
<char>result;//theresult:closure

/**//////////////////////////////////////////////////////////////////////////////
//inputarea//
result.insert(’a’);
result.insert(’e’);
/**//////////////////////////////////////////////////////////////////////////////

//savetheinputina
input;
for(<char>::iteratori=result.begin;i!=result.end;i)
input.push_back(*i);
cout<<\"输入元素为:\"<<input<<endl;



<char>update=result;

//initiatethemultimap.
for(i=0;i<((fd)/(FD));i)...{
temp=fd[i].getLeftAtt;//getwheFD:w->z [Page]
for(::iteratoriter=temp.begin;iter!=temp.end;iter)...{
mm.insert(make_pair(*iter,fd[i]));
}
}

typedefmultimap<char,FD>::iteratormm_iter;//multimapiterator

//displaythemultimap.justfortest.
mm_iteritr=mm.begin;
while(itr!=mm.end)...{
cout<<\"List[\"<<itr->first<<\"]:\";
itr->second.pr;
itr;
}

//calculation
while(update.size!=0)...{
<char>::iteratorchoose=update.begin;//chooseoneelementinupdate.
charidx=*choose;
//cout<<\"Inlist:\"<<idx<<endl;//testline
update.erase(idx);//update=update-choose.

//findallFDinlist[choose]
mm_iterbegin=mm.lower_bound(idx);
mm_iterend=mm.upper_bound(idx);

//foreachFD:w->zinlist[choose]
while(begin!=end)...{
begin->second.minusCount;//count=count-1.
(!begin->second.getCount)...{
<char>z;
right=begin->second.getRightAtt;//getzinw->z [Page]
//cout<<\"右属性为:\"<<right<<endl;//testline

//convertzto<char>z
for(::iteratoriter=right.begin;iter!=right.end;iter)...{
z.insert(*iter);
}

//add=z-result;
for(<char>::iteratorit=result.begin;it!=result.end;it)
z.erase(*it);

result.insert(z.begin,z.end);//result=resultoradd.
update.insert(z.begin,z.end);//update=updateoradd.
begin;
}//endcount=0
}//endwhilebegin!=end


}//endwhilesize!=0

cout<<input<<\"闭包为:\";
for(<char>::iteratoritr=result.begin;itr!=result.end;itr)
cout<<*itr;
cout<<endl<<\"结束!\"<<endl;

0;
}
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: