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

📄 graph__vat_8h-source.html

📁 这是一个用于数据挖掘的常用算法的模板库(数据挖掘的C++模板库for UNIX)
💻 HTML
📖 第 1 页 / 共 4 页
字号:
<a name="l00442"></a>00442     <span class="keywordtype">void</span> write_file(ostream &amp; output)<span class="keyword"> const</span>{<a name="l00443"></a>00443       <span class="comment">//ostringstream output;</span><a name="l00444"></a>00444       <span class="keywordtype">int</span> ITSZ=<span class="keyword">sizeof</span>(int);<a name="l00445"></a>00445       CONST_IT it;<a name="l00446"></a>00446       CONST_EIT eit;<a name="l00447"></a>00447       <span class="keywordtype">int</span> tid,evat_n,evat_sz;<a name="l00448"></a>00448       <span class="keywordtype">int</span> gvat_sz=_vat.size();<a name="l00449"></a>00449       output.write(reinterpret_cast&lt;const char *&gt;(&amp;gvat_sz), ITSZ);<a name="l00450"></a>00450       <span class="keywordflow">for</span> (it=begin();it!=end();++it){<a name="l00451"></a>00451         tid=it-&gt;first;<a name="l00452"></a>00452         evat_n=it-&gt;second.size();<a name="l00453"></a>00453         output.write(reinterpret_cast&lt;const char *&gt;(&amp;tid), ITSZ);<a name="l00454"></a>00454         output.write(reinterpret_cast&lt;const char *&gt;(&amp;evat_n), ITSZ);<a name="l00455"></a>00455         <span class="keywordflow">for</span> (eit=it-&gt;second.begin(); eit!=it-&gt;second.end(); ++eit){<a name="l00456"></a>00456           evat_sz = eit-&gt;size();<a name="l00457"></a>00457           output.write(reinterpret_cast&lt;const char *&gt;(&amp;evat_sz), ITSZ);<a name="l00458"></a>00458           eit-&gt;write_file(output);<a name="l00459"></a>00459         } <span class="comment">//for eit</span><a name="l00460"></a>00460       }<span class="comment">//it</span><a name="l00461"></a>00461       <span class="comment">// Writing _vids goes here.</span><a name="l00462"></a>00462       <span class="keyword">typename</span> VSETS::const_iterator vit;<a name="l00463"></a>00463       <span class="keywordtype">int</span> vvsetn = _vids.size();<a name="l00464"></a>00464       output.write(reinterpret_cast&lt;const char *&gt;(&amp;vvsetn), ITSZ);<a name="l00465"></a>00465       <span class="keywordflow">for</span> (vit=begin_v(); vit!=end_v(); vit++){<a name="l00466"></a>00466         <span class="keyword">typename</span> vector&lt;VSET&gt;::const_iterator vvsetit;<a name="l00467"></a>00467         <span class="keywordtype">int</span> vsetn = vit-&gt;size();<a name="l00468"></a>00468         output.write(reinterpret_cast&lt;const char *&gt;(&amp;vsetn), ITSZ);<a name="l00469"></a>00469         <span class="keywordflow">for</span> (vvsetit=vit-&gt;begin(); vvsetit!=vit-&gt;end(); vvsetit++){<a name="l00470"></a>00470           <span class="keyword">typename</span> VSET::iterator vsetit;<a name="l00471"></a>00471           <span class="keywordtype">int</span> n = vvsetit-&gt;size();<a name="l00472"></a>00472           output.write(reinterpret_cast&lt;const char *&gt;(&amp;n), ITSZ);<a name="l00473"></a>00473           <span class="keywordflow">for</span> (vsetit=vvsetit-&gt;begin(); vsetit!=vvsetit-&gt;end(); vsetit++){<a name="l00474"></a>00474             <span class="keywordtype">int</span> v=*vsetit;<a name="l00475"></a>00475             output.write(reinterpret_cast&lt;const char *&gt;(&amp;v), ITSZ);<a name="l00476"></a>00476           }<span class="comment">//vsetit</span><a name="l00477"></a>00477         }<span class="comment">//vvsetit</span><a name="l00478"></a>00478       }<span class="comment">//vit</span><a name="l00479"></a>00479       <span class="comment">//output_file.write(output.str().c_str(), output.str().size());</span><a name="l00480"></a>00480     } <span class="comment">//end write_file</span><a name="l00481"></a>00481     <a name="l00482"></a>00482     <span class="keywordtype">void</span> read_file (istream &amp; input, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> size) {<a name="l00483"></a>00483       <span class="keywordtype">int</span> ITSZ=<span class="keyword">sizeof</span>(int);<a name="l00484"></a>00484       <span class="keywordtype">int</span> buf_size=size/ITSZ;   <a name="l00485"></a>00485       <span class="keywordtype">int</span> *buf = <span class="keyword">new</span> <span class="keywordtype">int</span>[buf_size];<a name="l00486"></a>00486       input.read((<span class="keywordtype">char</span> *)buf, (size)); <a name="l00487"></a>00487       <span class="keywordtype">int</span> current=0;<a name="l00488"></a>00488       <span class="keywordtype">int</span> vats_size=buf[current++], vats_seen=0;<a name="l00489"></a>00489       <span class="keywordflow">while</span>(vats_seen++ &lt; vats_size){<a name="l00490"></a>00490         <span class="keywordtype">int</span> tid=buf[current++];<a name="l00491"></a>00491         <span class="keywordtype">int</span> evat_n=buf[current++];<a name="l00492"></a>00492         <span class="keywordtype">int</span> evats_seen=0;<a name="l00493"></a>00493         RMP_VATS edges;<a name="l00494"></a>00494         <span class="keywordflow">while</span>(evats_seen++ &lt; evat_n){<a name="l00495"></a>00495           <a class="code" href="classevat.html">evat&lt;ALLOC&gt;</a> new_evat;<a name="l00496"></a>00496           <span class="keywordtype">int</span> evat_sz=buf[current++];<a name="l00497"></a>00497           <span class="keywordflow">while</span>(evat_sz-- &gt; 0){<a name="l00498"></a>00498             <span class="keywordtype">int</span> f1, f2;<a name="l00499"></a>00499             f1 = buf[current++];<a name="l00500"></a>00500             f2 = buf[current++];<a name="l00501"></a>00501             new_evat.<a class="code" href="classevat.html#32a3e3ee1a1a23bd65e7b33b854de201">push_back</a>(make_pair(f1, f2));<a name="l00502"></a>00502           }<a name="l00503"></a>00503           edges.push_back(new_evat);<a name="l00504"></a>00504         }<a name="l00505"></a>00505         _vat.push_back(make_pair(tid, edges));<a name="l00506"></a>00506       }<a name="l00507"></a>00507       <span class="comment">//Reading _vids goes here.</span><a name="l00508"></a>00508 <a name="l00509"></a>00509       <span class="keywordtype">int</span> vids_size=buf[current++], vids_seen=0;<a name="l00510"></a>00510       <span class="keywordflow">while</span>(vids_seen++ &lt; vids_size){<a name="l00511"></a>00511         vector &lt;VSET&gt; new_vsetv;<a name="l00512"></a>00512         <span class="keywordtype">int</span> vsetv_n=buf[current++];<a name="l00513"></a>00513         <span class="keywordtype">int</span> vsets_seen=0;<a name="l00514"></a>00514         <span class="keywordflow">while</span>(vsets_seen++ &lt; vsetv_n){<a name="l00515"></a>00515           VSET new_vset;<a name="l00516"></a>00516           <span class="keywordtype">int</span> vset_sz=buf[current++];<a name="l00517"></a>00517           <span class="keywordflow">while</span>(vset_sz-- &gt; 0){<a name="l00518"></a>00518             <span class="keywordtype">int</span> i = buf[current++];<a name="l00519"></a>00519             new_vset.insert(i);<a name="l00520"></a>00520           } <span class="comment">// evat_sz</span><a name="l00521"></a>00521           new_vsetv.push_back(new_vset);<a name="l00522"></a>00522         }<span class="comment">//vsets_seen</span><a name="l00523"></a>00523         _vids.push_back(new_vsetv);<a name="l00524"></a>00524       }<span class="comment">//vids_seen</span><a name="l00525"></a>00525 <a name="l00526"></a>00526       <span class="comment">//this-&gt;print();</span><a name="l00527"></a>00527       input.clear();<a name="l00528"></a>00528       <span class="keyword">delete</span> [] buf;<a name="l00529"></a>00529     } <span class="comment">//read_file</span><a name="l00530"></a>00530 <a name="l00532"></a><a class="code" href="classvat_3_01GRAPH__PROP_00_01V__Fk1__MINE__PROP_00_01ALLOC_00_01ST_01_4.html#18c4caa2a2d7fa6f171367a35c9ebe52">00532</a>   <span class="keywordtype">bool</span> is_new_vertex(<span class="keyword">const</span> <span class="keywordtype">int</span>&amp; vid, <span class="keyword">const</span> <span class="keywordtype">int</span>&amp; tid, <span class="keyword">const</span> <span class="keywordtype">int</span>&amp; offset)<span class="keyword"> const </span>{<a name="l00533"></a>00533     <span class="keywordflow">if</span>(_vids[tid][offset].find(vid)==_vids[tid][offset].end()) {<a name="l00534"></a>00534       <span class="keywordflow">return</span> <span class="keyword">true</span>;<a name="l00535"></a>00535     }<a name="l00536"></a>00536     <span class="keywordflow">return</span> <span class="keyword">false</span>;<a name="l00537"></a>00537   }<span class="comment">//end is_new_vertex()</span><a name="l00538"></a>00538 <a name="l00539"></a>00539 <a name="l00540"></a>00540   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classevat.html">evat</a>&lt;ALLOC&gt;; <span class="comment">// required for intersect functions in evat to work</span><a name="l00541"></a>00541   <a name="l00542"></a>00542  <span class="keyword">private</span>:<a name="l00543"></a>00543   GVAT _vat;<a name="l00544"></a>00544   VSETS _vids;<a name="l00545"></a>00545 <a name="l00546"></a>00546 }; <span class="comment">//end class vat for graphs</span><a name="l00547"></a>00547 <a name="l00548"></a>00548 <a name="l00549"></a>00549 <span class="keyword">template</span>&lt;<span class="keyword">typename</span> PP, <span class="keyword">typename</span> MP, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>&gt; <span class="keyword">class </span>ALLOC, <span class="keyword">template</span>&lt;<span class="keyword">typename</span>, <span class="keyword">typename</span>&gt; <span class="keyword">class </span>ST&gt;<a name="l00550"></a>00550   ostream&amp; operator&lt;&lt; (ostream&amp; ostr, const vat&lt;PP, MP, ALLOC, ST&gt;* v) {<a name="l00551"></a>00551   <span class="keyword">typename</span> <a class="code" href="classvat.html">vat&lt;PP, MP, ALLOC, ST&gt;::CONST_IT</a> it;<a name="l00552"></a>00552   <span class="keyword">typename</span> <a class="code" href="classvat.html">vat&lt;PP, MP, ALLOC, ST&gt;::RMP_VATS::const_iterator</a> rit;<a name="l00553"></a>00553 <a name="l00554"></a>00554   ostr&lt;&lt;<span class="stringliteral">"VAT:"</span>&lt;&lt;endl;<a name="l00555"></a>00555   <span class="keywordflow">for</span>(it=v-&gt;begin(); it!=v-&gt;end(); it++) {<a name="l00556"></a>00556     ostr&lt;&lt;<span class="stringliteral">"tid="</span>&lt;&lt;it-&gt;first&lt;&lt;endl;<a name="l00557"></a>00557     <span class="keywordflow">for</span>(rit=it-&gt;second.begin(); rit!=it-&gt;second.end(); rit++)<a name="l00558"></a>00558       ostr&lt;&lt;*rit&lt;&lt;endl;<a name="l00559"></a>00559   }<a name="l00560"></a>00560 <a name="l00561"></a>00561   <span class="comment">// These lines print out the vid-sets</span><a name="l00562"></a>00562   <span class="keyword">typename</span> <a class="code" href="classvat.html">vat&lt;PP, MP, ALLOC, ST&gt;::VSETS::const_iterator</a> vit1;<a name="l00563"></a>00563   <span class="comment">// typename vector&lt;typename vat&lt;PP, MP, ALLOC, ST&gt;::VSET, ALLOC&lt;typename vat&lt;PP, MP, ALLOC, ST&gt;::VSET&gt; &gt;::const_iterator vit2;</span><a name="l00564"></a>00564   <span class="keyword">typename</span> vector&lt;typename vat&lt;PP, MP, ALLOC, ST&gt;::VSET &gt;::const_iterator vit2;<a name="l00565"></a>00565   <span class="keyword">typename</span> <a class="code" href="classvat.html">vat&lt;PP, MP, ALLOC, ST&gt;::VSET::const_iterator</a> vit3;<a name="l00566"></a>00566 <a name="l00567"></a>00567   ostr&lt;&lt;<span class="stringliteral">"Vertices are"</span>&lt;&lt;endl;<a name="l00568"></a>00568   <span class="keywordflow">for</span>(vit1=v-&gt;begin_v(), it=v-&gt;begin(); vit1!=v-&gt;end_v(); vit1++, it++) {<a name="l00569"></a>00569     ostr&lt;&lt;<span class="stringliteral">"tid="</span>&lt;&lt;it-&gt;first&lt;&lt;endl;<a name="l00570"></a>00570     <span class="keywordflow">for</span>(vit2=vit1-&gt;begin(); vit2!=vit1-&gt;end(); vit2++) {<a name="l00571"></a>00571       <span class="keywordflow">for</span>(vit3=vit2-&gt;begin(); vit3!=vit2-&gt;end(); vit3++)<a name="l00572"></a>00572         ostr&lt;&lt;*vit3&lt;&lt;<span class="stringliteral">" "</span>;<a name="l00573"></a>00573         ostr&lt;&lt;endl;<a name="l00574"></a>00574     }<a name="l00575"></a>00575   }<a name="l00576"></a>00576       <a name="l00577"></a>00577   <span class="keywordflow">return</span> ostr;<a name="l00578"></a>00578 }<span class="comment">//operator&lt;&lt; for vat*</span><a name="l00579"></a>00579 <a name="l00580"></a>00580 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Jul 26 14:01:08 2006 for DMTL by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address></body></html>

⌨️ 快捷键说明

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