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

📄 seq__instance_8h-source.html

📁 这是一个用于数据挖掘的常用算法的模板库(数据挖掘的C++模板库for UNIX)
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<a name="l00127"></a>00127 <a name="l00128"></a>00128 <span class="keyword">template</span> &lt;<span class="keyword">class</span> MP&gt;<a name="l00129"></a>00129 ostream&amp; operator&lt;&lt; (ostream&amp; ostr, const seq_instance&lt;V_Fkk_IND_MINE_PROP&gt;&amp; rhs);<a name="l00130"></a>00130 <a name="l00135"></a>00135 <span class="keyword">template</span> &lt;<span class="keyword">class</span> MP&gt;<a name="l00136"></a><a class="code" href="classseq__instance_3_01V__Fkk__IND__MINE__PROP_01_4.html">00136</a> <span class="keyword">class </span><a class="code" href="classseq__instance.html">seq_instance</a>&lt;V_Fkk_IND_MINE_PROP&gt;<a name="l00137"></a>00137 {<a name="l00138"></a>00138   <a name="l00139"></a>00139 <span class="keyword">public</span>:<a name="l00140"></a>00140   <a name="l00141"></a>00141   <a class="code" href="classseq__instance.html">seq_instance</a>(): pos(-1), induced(<span class="keyword">false</span>) {} <span class="comment">//default defunct constructor</span><a name="l00142"></a>00142   <a name="l00143"></a><a class="code" href="classseq__instance_3_01V__Fkk__IND__MINE__PROP_01_4.html#c10031e99f7ea94675a2acb37808b30f">00143</a>   <a class="code" href="classseq__instance.html">seq_instance</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> timestamp, <span class="keyword">const</span> <span class="keywordtype">int</span> position): pos(position), induced(true) {} <a name="l00145"></a><a class="code" href="classseq__instance_3_01V__Fkk__IND__MINE__PROP_01_4.html#9657a1d9da95318f26a425d489535d03">00145</a>   <a class="code" href="classseq__instance.html">seq_instance</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> position, <span class="keyword">const</span> <span class="keywordtype">bool</span> ind): pos(position), induced(ind) {} <a name="l00157"></a>00157   <span class="keyword">template</span>&lt;<span class="keyword">template</span>&lt;<span class="keyword">typename</span>, <span class="keyword">typename</span> &gt; <span class="keyword">class </span>ST, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>&gt; <span class="keyword">class </span>ALLOC&gt;<a name="l00158"></a><a class="code" href="classseq__instance_3_01V__Fkk__IND__MINE__PROP_01_4.html#3b27452c8cc82536496f73b204ab2d59">00158</a>   <span class="keyword">static</span> <span class="keywordtype">void</span> seq_join_seq(<span class="keyword">const</span> ST&lt;<a class="code" href="classseq__instance.html">seq_instance</a>, ALLOC&lt;seq_instance&gt; &gt;&amp; i1, <span class="keyword">const</span> ST&lt;<a class="code" href="classseq__instance.html">seq_instance</a>, ALLOC&lt;seq_instance&gt; &gt;&amp; i2,<a name="l00159"></a>00159                ST&lt;<a class="code" href="classseq__instance.html">seq_instance</a>, ALLOC&lt;seq_instance&gt; &gt;&amp; seqi_inst, <a name="l00160"></a>00160                ST&lt;<a class="code" href="classseq__instance.html">seq_instance</a>, ALLOC&lt;seq_instance&gt; &gt;&amp; seqj_inst, <a name="l00161"></a>00161                <span class="keywordtype">bool</span>&amp; seqi_ind, <span class="keywordtype">bool</span>&amp; seqj_ind, <a name="l00162"></a>00162                <span class="keywordtype">bool</span>&amp; seqi_emb, <span class="keywordtype">bool</span>&amp; seqj_emb, <a name="l00163"></a>00163                            <span class="keyword">const</span> <span class="keywordtype">bool</span> self_join_only, <span class="keyword">const</span> <span class="keywordtype">bool</span> skip0=<span class="keyword">false</span>) <a name="l00164"></a>00164   {<a name="l00165"></a>00165     <span class="keyword">typedef</span> ST&lt;seq_instance, ALLOC&lt;seq_instance&gt; &gt; INSTANCES;<a name="l00166"></a>00166     <span class="keyword">typedef</span> <span class="keyword">typename</span> INSTANCES::const_iterator CONST_INST_IT;<a name="l00167"></a>00167       CONST_INST_IT it1, it2;<a name="l00168"></a>00168       <a name="l00169"></a>00169       <span class="keywordflow">if</span> (!skip0){<a name="l00170"></a>00170         <span class="keywordtype">bool</span> seen_valid_occurrence = <span class="keyword">false</span>;<a name="l00171"></a>00171         <span class="comment">// Results in seq atom with seqi prefix</span><a name="l00172"></a>00172         <span class="keywordflow">for</span>(it1=i1.begin(), it2=i2.begin(); it1 != i1.end() &amp;&amp; it2 != i2.end();) {<a name="l00173"></a>00173           <a name="l00174"></a>00174           <span class="keywordflow">if</span> (it1-&gt;pos &lt; it2-&gt;pos){<a name="l00175"></a>00175             seen_valid_occurrence = <span class="keyword">true</span>;<a name="l00176"></a>00176             <span class="keywordflow">if</span> (it1-&gt;is_induced() &amp;&amp; it2-&gt;pos - it1-&gt;pos == 1){<a name="l00177"></a>00177               seqi_inst.push_back(<a class="code" href="classseq__instance.html">seq_instance</a>(it2-&gt;pos, <span class="keyword">true</span>));<a name="l00178"></a>00178               seqi_ind = <span class="keyword">true</span>;    <a name="l00179"></a>00179               ++it2;<a name="l00180"></a>00180             }<a name="l00181"></a>00181             ++it1;<a name="l00182"></a>00182           }<a name="l00183"></a>00183           <span class="keywordflow">else</span>{<a name="l00184"></a>00184             <span class="keywordflow">if</span> (seen_valid_occurrence){<a name="l00185"></a>00185               seqi_inst.push_back(<a class="code" href="classseq__instance.html">seq_instance</a>(it2-&gt;pos, <span class="keyword">false</span>));    <a name="l00186"></a>00186               seqi_emb=<span class="keyword">true</span>;<a name="l00187"></a>00187             }<a name="l00188"></a>00188             ++it2;<a name="l00189"></a>00189           }<a name="l00190"></a>00190         }<a name="l00191"></a>00191         <span class="comment">//copy over any remaining occurrences in it2</span><a name="l00192"></a>00192         <span class="keywordflow">for</span> (; it2 != i2.end(); ++it2){<a name="l00193"></a>00193           <span class="keywordflow">if</span> (seen_valid_occurrence){<a name="l00194"></a>00194             seqi_inst.push_back(<a class="code" href="classseq__instance.html">seq_instance</a>(it2-&gt;pos, <span class="keyword">false</span>));    <a name="l00195"></a>00195             seqi_emb=<span class="keyword">true</span>;<a name="l00196"></a>00196           }<a name="l00197"></a>00197         }<a name="l00198"></a>00198       }<a name="l00199"></a>00199       <a name="l00200"></a>00200       <span class="comment">// Only if the join is going to result in 2 different vats.</span><a name="l00201"></a>00201       <span class="keywordflow">if</span>(!self_join_only) {<a name="l00202"></a>00202         <span class="keywordtype">bool</span> seen_valid_occurrence = <span class="keyword">false</span>;<a name="l00203"></a>00203         <span class="comment">// Results in seq atom with seqj prefix</span><a name="l00204"></a>00204         <span class="keywordflow">for</span>(it1=i1.begin(), it2=i2.begin(); it1 != i1.end() &amp;&amp; it2 != i2.end();) {<a name="l00205"></a>00205           <a name="l00206"></a>00206           <span class="keywordflow">if</span> (it2-&gt;pos &lt; it1-&gt;pos){<a name="l00207"></a>00207             seen_valid_occurrence = <span class="keyword">true</span>;<a name="l00208"></a>00208             <span class="keywordflow">if</span> (it2-&gt;is_induced() &amp;&amp; it1-&gt;pos - it2-&gt;pos == 1){<a name="l00209"></a>00209               seqj_inst.push_back(<a class="code" href="classseq__instance.html">seq_instance</a>(it1-&gt;pos, <span class="keyword">true</span>));<a name="l00210"></a>00210               seqj_ind = <span class="keyword">true</span>;    <a name="l00211"></a>00211               ++it1;<a name="l00212"></a>00212             }<a name="l00213"></a>00213             ++it2;<a name="l00214"></a>00214           }<a name="l00215"></a>00215           <span class="keywordflow">else</span>{<a name="l00216"></a>00216             <span class="keywordflow">if</span> (seen_valid_occurrence){<a name="l00217"></a>00217               seqj_inst.push_back(<a class="code" href="classseq__instance.html">seq_instance</a>(it1-&gt;pos, <span class="keyword">false</span>));    <a name="l00218"></a>00218               seqj_emb=<span class="keyword">true</span>;<a name="l00219"></a>00219             }<a name="l00220"></a>00220             ++it1;<a name="l00221"></a>00221           }<a name="l00222"></a>00222         }<a name="l00223"></a>00223         <span class="comment">//copy over any remaining occurrences in it1</span><a name="l00224"></a>00224         <span class="keywordflow">for</span> (; it1 != i1.end(); ++it1){<a name="l00225"></a>00225           <span class="keywordflow">if</span> (seen_valid_occurrence){<a name="l00226"></a>00226             seqj_inst.push_back(<a class="code" href="classseq__instance.html">seq_instance</a>(it1-&gt;pos, <span class="keyword">false</span>));    <a name="l00227"></a>00227             seqj_emb=<span class="keyword">true</span>;<a name="l00228"></a>00228           }<a name="l00229"></a>00229         }        <a name="l00230"></a>00230       }<a name="l00231"></a>00231       <a name="l00232"></a>00232   }<span class="comment">//end seq_join_seq()    </span><a name="l00233"></a>00233   <a name="l00234"></a>00234   <span class="keyword">friend</span> ostream&amp; operator&lt;&lt; &lt;&gt;(ostream&amp; ostr, <span class="keyword">const</span> <a class="code" href="classseq__instance.html">seq_instance</a>&amp; rhs); <a name="l00235"></a>00235   <span class="keywordtype">int</span> get_pos()<span class="keyword"> const </span>{<span class="keywordflow">return</span> pos;}<a name="l00236"></a>00236   <a name="l00237"></a>00237   <span class="keywordtype">bool</span> get_induced()<span class="keyword"> const </span>{<a name="l00238"></a>00238     <span class="keywordflow">return</span> induced;<a name="l00239"></a>00239   } <span class="comment">// Returns true if this instance is an induced occurrence</span><a name="l00240"></a>00240   <a name="l00241"></a>00241 <span class="keyword">private</span>:<a name="l00242"></a>00242   <span class="keywordtype">int</span> pos; <a name="l00243"></a>00243   <span class="keywordtype">bool</span> induced; <a name="l00244"></a>00244   <span class="keywordtype">bool</span> is_induced()<span class="keyword"> const</span>{<a name="l00245"></a>00245     <span class="keywordflow">return</span> induced;<a name="l00246"></a>00246   }<a name="l00247"></a>00247 }; <span class="comment">//end of seq_instance</span><a name="l00248"></a>00248 <a name="l00249"></a>00249 <span class="keyword">template</span> &lt;<span class="keyword">class</span> MP&gt;<a name="l00250"></a>00250 ostream&amp; operator&lt;&lt; (ostream&amp; ostr, const seq_instance&lt;V_Fkk_IND_MINE_PROP&gt;&amp; rhs){<a name="l00251"></a>00251   ostr &lt;&lt; <span class="stringliteral">"[ "</span> &lt;&lt; rhs.pos &lt;&lt; <span class="stringliteral">", "</span> &lt;&lt; rhs.induced &lt;&lt; <span class="stringliteral">" ] "</span>;<a name="l00252"></a>00252   <span class="keywordflow">return</span> ostr;<a name="l00253"></a>00253 }<a name="l00254"></a>00254 <a name="l00255"></a>00255 <a name="l00256"></a>00256 <span class="preprocessor">#endif</span><a name="l00257"></a>00257 <span class="preprocessor"></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 + -