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

📄 input__output__manager_8cpp-source.html

📁 APRIOR算法的源程序.希望对大家有用,谁有FP-GROWTH算法的程序请给我发一份,谢谢.anne2422843@sina.com.cn
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>APRIORI algorithm: Input_Output_Manager.cpp Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.9.1 --><div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div><h1>Input_Output_Manager.cpp</h1><a href="Input__Output__Manager_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment">00001 <span class="comment">/***************************************************************************</span>00002 <span class="comment">                          Input_Output_Manager.cpp  -  description</span>00003 <span class="comment">                             -------------------</span>00004 <span class="comment">    begin                : cs march 10 2004</span>00005 <span class="comment">    copyright            : (C) 2004 by Ferenc Bodon</span>00006 <span class="comment">    email                : bodon@cs.bme.hu</span>00007 <span class="comment"> ***************************************************************************/</span>00008 00009 00014 <span class="preprocessor">#include "<a class="code" href="Input__Output__Manager_8hpp.html">Input_Output_Manager.hpp</a>"</span>00015 <span class="preprocessor">#include &lt;algorithm&gt;</span>00016 <a name="l00017"></a><a class="code" href="classInput__Output__Manager.html#a0">00017</a> <a class="code" href="classInput__Output__Manager.html#a0">Input_Output_Manager::Input_Output_Manager</a>( ifstream&amp; basket_file, 00018                                             <span class="keyword">const</span> <span class="keywordtype">char</span>* output_file_name ):00019    ofstream(output_file_name), basket_file(basket_file)00020 {00021 }00022 <a name="l00027"></a><a class="code" href="classInput__Output__Manager.html#a1">00027</a> <span class="keywordtype">int</span> <a class="code" href="classInput__Output__Manager.html#a1">Input_Output_Manager::read_in_a_line</a>( set&lt;itemtype&gt;&amp; basket )00028 {00029    <span class="keywordflow">if</span>( <a class="code" href="classInput__Output__Manager.html#r0">basket_file</a>.eof() ) <span class="keywordflow">return</span> 0;00030    <span class="keywordtype">char</span>          c;00031    <a class="code" href="common_8hpp.html#a0">itemtype</a>      pos;00032 00033    basket.clear();00034    <span class="keywordflow">do</span>00035    {00036       <span class="keywordtype">int</span> item = 0;00037       pos = 0;00038       <a class="code" href="classInput__Output__Manager.html#r0">basket_file</a>.get(c);00039       <span class="keywordflow">while</span>(<a class="code" href="classInput__Output__Manager.html#r0">basket_file</a>.good() &amp;&amp; (c &gt;= <span class="charliteral">'0'</span>) &amp;&amp; (c &lt;= <span class="charliteral">'9'</span>))00040       {00041          item *= 10;00042          item += int(c)-int(<span class="charliteral">'0'</span>);00043          <a class="code" href="classInput__Output__Manager.html#r0">basket_file</a>.get(c);00044          pos++;00045       }00046       <span class="keywordflow">if</span>( pos ) basket.insert( (<a class="code" href="common_8hpp.html#a0">itemtype</a>) item );00047    }00048    <span class="keywordflow">while</span>( !<a class="code" href="classInput__Output__Manager.html#r0">basket_file</a>.eof() &amp;&amp; c != <span class="charliteral">'\n'</span> );00049    <span class="keywordflow">return</span> 1;00050 }00051 <a name="l00059"></a><a class="code" href="classInput__Output__Manager.html#a2">00059</a> <a class="code" href="common_8hpp.html#a1">countertype</a> <a class="code" href="classInput__Output__Manager.html#a2">Input_Output_Manager::find_frequent_items</a>( 00060    <span class="keyword">const</span> <span class="keywordtype">double</span> min_supp, vector&lt;countertype&gt;&amp; support_of_items )00061 {00062    <a class="code" href="common_8hpp.html#a1">countertype</a> basket_number = 0;00063    set&lt;itemtype&gt; basket;00064    vector&lt; countertype &gt; temp_counter_vector;00065 00067    set&lt;itemtype&gt;::iterator it_basket;00068    <span class="keywordflow">while</span>( <a class="code" href="classInput__Output__Manager.html#a1">read_in_a_line</a>( basket ) )00069    {      00070       <span class="keywordflow">if</span>( !basket.empty() )00071       {00072          basket_number++;00073          <span class="keywordflow">for</span>( it_basket = basket.begin(); it_basket != basket.end(); 00074               it_basket++ )00075          {00076             <span class="keywordflow">if</span>( *it_basket + 1  &gt; temp_counter_vector.size() )00077                temp_counter_vector.resize( *it_basket + 1, 0 );00078             temp_counter_vector[*it_basket]++;00079          }00080       }00081    }00082 00084    <span class="keywordtype">double</span> min_occurrence = min_supp * (basket_number - 0.5);00085    vector&lt;countertype&gt;::size_type edgeIndex;00086 00087    set&lt; pair&lt;countertype, itemtype&gt; &gt; temp_set;00088    <span class="keywordflow">for</span>( edgeIndex = 0; edgeIndex &lt; temp_counter_vector.size(); 00089         edgeIndex++ )00090       <span class="keywordflow">if</span>( temp_counter_vector[edgeIndex] &gt; min_occurrence )00091          temp_set.insert(00092             pair&lt;countertype, itemtype&gt;(temp_counter_vector[edgeIndex],00093                                           edgeIndex));00094 00095    <a class="code" href="classInput__Output__Manager.html#r2">new_code_inverse</a>.clear();00096    support_of_items.clear();00097    <span class="keywordflow">for</span>(set&lt; pair&lt;countertype, itemtype&gt; &gt;::iterator it = temp_set.begin();00098        it != temp_set.end(); it++)00099    {00100          <a class="code" href="classInput__Output__Manager.html#r2">new_code_inverse</a>.push_back((*it).second);00101          support_of_items.push_back((*it).first);00102    }00103 <span class="comment">//   reverse( new_code_inverse.begin(),new_code_inverse.end() );</span>00104 <span class="comment">//   reverse( support_of_items.begin(), support_of_items.end() );</span>00105    vector&lt;itemtype&gt;(new_code_inverse).swap(<a class="code" href="classInput__Output__Manager.html#r2">new_code_inverse</a>);00106    vector&lt;countertype&gt;(support_of_items).swap(support_of_items);00107 00108    <a class="code" href="classInput__Output__Manager.html#r1">new_code</a>.reserve(  temp_counter_vector.size() + 1 );00109    <a class="code" href="classInput__Output__Manager.html#r1">new_code</a>.resize(  temp_counter_vector.size() + 1, 0 );00110    <span class="keywordflow">for</span>( edgeIndex = 0; edgeIndex &lt; <a class="code" href="classInput__Output__Manager.html#r2">new_code_inverse</a>.size(); edgeIndex++ )00111       <a class="code" href="classInput__Output__Manager.html#r1">new_code</a>[<a class="code" href="classInput__Output__Manager.html#r2">new_code_inverse</a>[edgeIndex]] = edgeIndex+1;00112    <span class="keywordflow">return</span> basket_number;00113 }<a name="l00118"></a><a class="code" href="classInput__Output__Manager.html#a3">00118</a> <span class="keywordtype">void</span> <a class="code" href="classInput__Output__Manager.html#a3">Input_Output_Manager::basket_recode</a>( 00119    <span class="keyword">const</span> set&lt;itemtype&gt;&amp; original_basket, vector&lt;itemtype&gt;&amp; new_basket )00120 {00121    new_basket.clear();00122    <span class="keywordflow">for</span>( set&lt;itemtype&gt;::const_iterator it_basket = original_basket.begin(); 00123         it_basket != original_basket.end(); it_basket++ )00124      <span class="keywordflow">if</span>( <a class="code" href="classInput__Output__Manager.html#r1">new_code</a>[*it_basket] ) new_basket.push_back( <a class="code" href="classInput__Output__Manager.html#r1">new_code</a>[*it_basket]-1 );00125    sort( new_basket.begin(), new_basket.end() );     00126 }00127 <a name="l00128"></a><a class="code" href="classInput__Output__Manager.html#a4">00128</a> <span class="keywordtype">void</span> <a class="code" href="classInput__Output__Manager.html#a4">Input_Output_Manager::write_out_basket</a>(<span class="keyword">const</span> set&lt;itemtype&gt;&amp; basket)00129 {00130    <span class="keywordflow">for</span>( set&lt;itemtype&gt;::const_iterator it_item = basket.begin(); 00131         it_item != basket.end(); it_item++)00132    {00133       operator&lt;&lt;( <a class="code" href="classInput__Output__Manager.html#r2">new_code_inverse</a>[*it_item] );00134       put(<span class="charliteral">' '</span>);00135    }00136 }00137 <a name="l00138"></a><a class="code" href="classInput__Output__Manager.html#a5">00138</a> <span class="keywordtype">void</span> <a class="code" href="classInput__Output__Manager.html#a5">Input_Output_Manager::write_out_basket_and_counter</a>(00139    <span class="keyword">const</span> set&lt;itemtype&gt;&amp; itemset, <span class="keyword">const</span> countertype counter)00140 {00141    <span class="keywordflow">for</span>( set&lt;itemtype&gt;::const_iterator it_item = itemset.begin(); 00142         it_item != itemset.end(); it_item++)00143    {00144       operator&lt;&lt;( <a class="code" href="classInput__Output__Manager.html#r2">new_code_inverse</a>[*it_item] );00145       put(<span class="charliteral">' '</span>);00146    }00147    put(<span class="charliteral">'('</span>);00148    operator&lt;&lt;(counter);00149    write(<span class="stringliteral">")\n"</span>,2);00150 }00151 <a name="l00152"></a><a class="code" href="classInput__Output__Manager.html#a6">00152</a> <span class="keywordtype">void</span> <a class="code" href="classInput__Output__Manager.html#a6">Input_Output_Manager::rewind</a>()00153 {00154    <a class="code" href="classInput__Output__Manager.html#r0">basket_file</a>.clear();00155    <a class="code" href="classInput__Output__Manager.html#r0">basket_file</a>.seekg(0, ios::beg);00156 }00157 <a name="l00158"></a><a class="code" href="classInput__Output__Manager.html#a7">00158</a> <a class="code" href="classInput__Output__Manager.html#a7">Input_Output_Manager::~Input_Output_Manager</a>()00159 {00160    close();00161 }</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Mar 11 14:48:06 2005 for APRIORI algorithm by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address></body></html>

⌨️ 快捷键说明

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