锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久99精品国产99久久,日韩久久无码免费毛片软件,欧美激情一区二区久久久http://www.shnenglu.com/aaxron/category/20576.html璁板綍淇鐨勫嵃璁? zh-cnWed, 19 Oct 2016 05:46:31 GMTWed, 19 Oct 2016 05:46:31 GMT60c++ traits(1)http://www.shnenglu.com/aaxron/archive/2016/10/14/214333.html澶╀笅澶╀笅Fri, 14 Oct 2016 06:18:00 GMThttp://www.shnenglu.com/aaxron/archive/2016/10/14/214333.htmlhttp://www.shnenglu.com/aaxron/comments/214333.htmlhttp://www.shnenglu.com/aaxron/archive/2016/10/14/214333.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/214333.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/214333.html#pragma once
template 
<typename T>  
struct TraitsHelper;

template 
<typename T>  
struct TraitsHelper {  
    
static const bool isPointer = false;  
    
enum {IsPointer = false};
    
bool GetIsPointer()
    {
        
return IsPointer;
    }
};  
template 
<typename T>  
struct TraitsHelper<T*> {  
    
static const bool isPointer = true;  
    
enum {IsPointer = true};
    
bool GetIsPointer()
    {
        
return IsPointer;
    }
};  

//call
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
    
int val = 0;
    
int* pVal = &val;
    TraitsHelper
<int> a;
    TraitsHelper
<int*> b;

    
bool b1 = a.IsPointer;
    
bool b2 = b.IsPointer;

    
bool b3 = a.GetIsPointer();

    
bool b4 = TraitsHelper<int>::IsPointer;
    
bool b5 = TraitsHelper<int*>::IsPointer;


    
return 0;
}


澶╀笅 2016-10-14 14:18 鍙戣〃璇勮
]]>
[鍘熷垱]涓涓狢++寮傚父鐨勪唬鏇挎柟妗?/title><link>http://www.shnenglu.com/aaxron/archive/2015/08/21/211640.html</link><dc:creator>澶╀笅</dc:creator><author>澶╀笅</author><pubDate>Fri, 21 Aug 2015 07:34:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2015/08/21/211640.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/211640.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2015/08/21/211640.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/211640.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/211640.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->#include "stdafx.h"<br /><br />template <typename T><br /><span style="color: #0000FF; ">class</span> E<br />{<br /><span style="color: #0000FF; ">public</span>:<br />    T val;<br />    <span style="color: #0000FF; ">int</span> errcode;<br /><br />    E(){}<br /><br />    E(<span style="color: #0000FF; ">const</span> T& val)<br />    {<br />        val = val;<br />    }<br /><br />    <span style="color: #0000FF; ">operator</span> T() <span style="color: #0000FF; ">const</span> <br />    {<br />        <span style="color: #0000FF; ">return</span> val;<br />    }<br />    <span style="color: #0000FF; ">operator</span> T*() <br />    {<br />        <span style="color: #0000FF; ">return</span> &val;<br />    } <br />    E<T> <span style="color: #0000FF; ">operator</span>=(<span style="color: #0000FF; ">const</span> T& _val)<br />    {<br />        val = _val;<br />        <span style="color: #0000FF; ">return</span> *<span style="color: #0000FF; ">this</span>;<br />    }<br /><span style="color: #0000FF; ">public</span>:<br />    <span style="color: #0000FF; ">int</span> fail() <span style="color: #0000FF; ">const</span><br />    {<br />        <span style="color: #0000FF; ">return</span> errcode;<br />    }<br /><br />};<br /><br /><br />E<<span style="color: #0000FF; ">int</span>> GetResult(<span style="color: #0000FF; ">bool</span> fail)<br />{<br />    E<<span style="color: #0000FF; ">int</span>> obj;<br />    obj.val = 0x1000;<br />    obj.errcode = fail;<br />    <span style="color: #0000FF; ">return</span> obj;<br />}<br /><br /><br /><span style="color: #0000FF; ">int</span> _tmain(<span style="color: #0000FF; ">int</span> argc, _TCHAR* argv[])<br />{<br />    E<<span style="color: #0000FF; ">int</span>> a;<br />    a.val = 5;<br />    a.errcode = <span style="color: #0000FF; ">false</span>;<br /><br />    <span style="color: #0000FF; ">int</span> b = a;<br />    <span style="color: #0000FF; ">int</span>* c = a;<br />    *c = 7;<br />    <span style="color: #0000FF; ">const</span> <span style="color: #0000FF; ">int</span>* d = a;<br /><br />    unsigned <span style="color: #0000FF; ">int</span> e = a = 8;<br /><br />    E<<span style="color: #0000FF; ">int</span>> x = GetResult(<span style="color: #0000FF; ">true</span>);<br /><br />    <span style="color: #0000FF; ">if</span> (x.fail())<br />        printf("error \r\n");<br />    <span style="color: #0000FF; ">else</span><br />        printf("succeed \r\n");<br />    <br />    <span style="color: #0000FF; ">if</span> (a.fail())<br />        printf("error \r\n");<br /><br />    <span style="color: #0000FF; ">return</span> 0;<br />}</div></div><img src ="http://www.shnenglu.com/aaxron/aggbug/211640.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2015-08-21 15:34 <a href="http://www.shnenglu.com/aaxron/archive/2015/08/21/211640.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>MapStreamhttp://www.shnenglu.com/aaxron/archive/2014/04/07/206493.html澶╀笅澶╀笅Mon, 07 Apr 2014 05:52:00 GMThttp://www.shnenglu.com/aaxron/archive/2014/04/07/206493.htmlhttp://www.shnenglu.com/aaxron/comments/206493.htmlhttp://www.shnenglu.com/aaxron/archive/2014/04/07/206493.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/206493.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/206493.html#pragma once
#include 
<map>
#include 
<cstdio>

#ifdef _WIN32
    #include 
<sys/stat.h>
#else
#endif

template
<typename Key,typename Value>
class MapStream
{
public:    
    std::map
<Key,Value> m_mapTable;
    typedef typename std::map
<Key,Value>::iterator MapStreamIterator;

    
int GetFileSize(const char* filename)
    {
        
struct stat f_stat;
        
if (stat(filename, &f_stat) == -1) {
            
return -1;
        }
        
return f_stat.st_size;
    }

    
bool Load(const char* filename)
    {
        FILE
* fp = fopen(filename,"rb");
        
if (fp ==NULL)
            
return false;

        
int metasize = sizeof(Key) + sizeof(Value);
        
char buffer[sizeof(Key) + sizeof(Value)];
        
int  readed;
        Key
* _key;
        Value
* _value;

        m_mapTable.clear();
        
while (fread(buffer,1,metasize,fp)==metasize)
        {
            _key    
= (Key*)buffer;
            _value    
= (Value*)&buffer[sizeof(Key)];
            m_mapTable[
*_key] = *_value;
        }
        fclose(fp);
        
return (GetFileSize(filename) == (m_mapTable.size()*metasize));
    }

    
bool Save(const char* filename)
    {
        FILE
* fp = fopen(filename,"wb");
        
if (fp ==NULL)
            
return false;

        
int metasize = sizeof(Key) + sizeof(Value);
        
char buffer[sizeof(Key) + sizeof(Value)];

        
int  readed;
        Key
* _key;
        Value
* _value;
        
        MapStreamIterator iter 
= m_mapTable.begin();
        
while (iter!=m_mapTable.end())
        {
            fwrite(
&iter->first, 1,sizeof(Key),fp);
            fwrite(
&iter->second,1,sizeof(Value),fp);
            iter
++;
        }
        fclose(fp);
        
int filesize = GetFileSize(filename);
        
return (GetFileSize(filename) == (m_mapTable.size()*metasize));
    }

    Value
& operator[] (const Key& _key)
    {
        
return m_mapTable[_key];
    }

    Value
* GetValue(const Key& _key)
    {
        MapStreamIterator iter  
= m_mapTable.find(_key);
        
if (iter!=m_mapTable.end())
            
return &iter->second;
        
return NULL;
    }
    
void SetValue(const Key& _key,const Value& _value)
    {
        m_mapTable[_key] 
= _value;
    }
    
void RemoveKey(const Key& _key)
    {
        m_mapTable.erase(_key);
    }
    
int Count()
    {
        
return m_mapTable.size();
    }
};


澶╀笅 2014-04-07 13:52 鍙戣〃璇勮
]]>
C++綾諱腑妯℃澘鍑芥暟鐨勭壒鍖?/title><link>http://www.shnenglu.com/aaxron/archive/2013/06/26/201317.html</link><dc:creator>澶╀笅</dc:creator><author>澶╀笅</author><pubDate>Wed, 26 Jun 2013 03:51:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2013/06/26/201317.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/201317.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2013/06/26/201317.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/201317.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/201317.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">C</span><span style="color: #000000">++</span><span style="color: #000000">綾諱腑妯℃澘鍑芥暟鐨勭壒鍖?br /><br /></span><span style="color: #000000">鏈榪戝湪浣跨敤鍦ㄤ嬌鐢ㄦā鏉跨壒鍖?nbsp;鍐欎竴孌電▼搴忔椂鍙戠幇涓涓鎬殑闂錛屾瘮濡傚儚濡備笅浠g爜錛?br /><br />     #include </span><span style="color: #000000"><</span><span style="color: #000000">iostream</span><span style="color: #000000">></span><span style="color: #000000"><br /></span><span style="color: #0000ff">using</span><span style="color: #000000"> </span><span style="color: #0000ff">namespace</span><span style="color: #000000"> std;<br /></span><span style="color: #0000ff">class</span><span style="color: #000000"> CMyClass<br />{<br /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br />     template </span><span style="color: #000000"><</span><span style="color: #000000">typename T</span><span style="color: #000000">></span><span style="color: #000000"><br />     </span><span style="color: #0000ff">struct</span><span style="color: #000000"> test<br />     { <br />         T i;<br />     };<br /><br />     template </span><span style="color: #000000"><></span><span style="color: #000000"><br />     </span><span style="color: #0000ff">struct</span><span style="color: #000000"> test</span><span style="color: #000000"><</span><span style="color: #0000ff">long</span><span style="color: #000000">></span><span style="color: #000000"><br />     {<br />         unsigned </span><span style="color: #0000ff">long</span><span style="color: #000000"> i;<br />     };<br />};<br /><br /></span><span style="color: #0000ff">int</span><span style="color: #000000"> main(</span><span style="color: #0000ff">void</span><span style="color: #000000">)<br />{<br />     CMyClass::test</span><span style="color: #000000"><</span><span style="color: #0000ff">int</span><span style="color: #000000">></span><span style="color: #000000"> test1;<br />     CMyClass::test</span><span style="color: #000000"><</span><span style="color: #0000ff">long</span><span style="color: #000000">></span><span style="color: #000000"> test2;<br />     CMyClass::test</span><span style="color: #000000"><</span><span style="color: #0000ff">char</span><span style="color: #000000">></span><span style="color: #000000"> test3;<br /><br />     cout </span><span style="color: #000000"><<</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">typeid(test1.i) is </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000"><<</span><span style="color: #000000"> typeid(test1.i).name() </span><span style="color: #000000"><<</span><span style="color: #000000"> endl;<br />     cout </span><span style="color: #000000"><<</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">typeid(test2.i) is </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000"><<</span><span style="color: #000000"> typeid(test2.i).name() </span><span style="color: #000000"><<</span><span style="color: #000000"> endl;<br />     cout </span><span style="color: #000000"><<</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">typeid(test3.i) is </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000"><<</span><span style="color: #000000"> typeid(test3.i).name() </span><span style="color: #000000"><<</span><span style="color: #000000"> endl;<br /><br />     </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br />}<br /><br />榪欐浠g爜鍦↙inux涓嬬殑GCC </span><span style="color: #000000">3.4</span><span style="color: #000000">.3涓嬫棤娉曠紪璇戦氳繃錛岀紪璇戞椂鎻愮ず閿欒錛?br /><br />xxx.cpp:</span><span style="color: #000000">12</span><span style="color: #000000">: error: invalid </span><span style="color: #0000ff">explicit</span><span style="color: #000000"> specialization before </span><span style="color: #000000">'</span><span style="color: #000000">></span><span style="color: #000000">'</span><span style="color: #000000"> token<br />xxx.cpp:</span><span style="color: #000000">12</span><span style="color: #000000">: error: </span><span style="color: #0000ff">explicit</span><span style="color: #000000"> specialization </span><span style="color: #0000ff">in</span><span style="color: #000000"> non</span><span style="color: #000000">-</span><span style="color: #0000ff">namespace</span><span style="color: #000000"> scope `</span><span style="color: #0000ff">class</span><span style="color: #000000"> CMyClass</span><span style="color: #000000">'<br /></span><span style="color: #000000"><br />浣嗗湪VC6鍜孷C8涓嬮兘鍙互緙栬瘧閫氳繃銆?br /><br /> <br /><br />鍚庣炕闃呰祫鏂欙紝鍙戠幇鏈変漢鎻愬埌錛孋</span><span style="color: #000000">++</span><span style="color: #000000">鏍囧噯涓瀹氾紝宓屽綾繪ā鏉垮湪綾葷殑瀹氫箟涓笉鍏佽琚樉紺虹壒鍖栧0鏄庯紝鍙厑璁稿亸鐗瑰寲錛?#8220;Explicit template specialization </span><span style="color: #0000ff">is</span><span style="color: #000000"> forbidden </span><span style="color: #0000ff">for</span><span style="color: #000000"> nested classes ”錛?#8220;As partial template specialization </span><span style="color: #0000ff">is</span><span style="color: #000000"> not forbidden ”錛夛紝姣斿錛岃繖鏍峰氨鍙互錛?br /><br />     <br />#include </span><span style="color: #000000"><</span><span style="color: #000000">iostream</span><span style="color: #000000">></span><span style="color: #000000"><br /></span><span style="color: #0000ff">using</span><span style="color: #000000"> </span><span style="color: #0000ff">namespace</span><span style="color: #000000"> std;<br /><br /></span><span style="color: #0000ff">class</span><span style="color: #000000"> CMyClass<br />{<br /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br />     template </span><span style="color: #000000"><</span><span style="color: #000000">typename T, typename S </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000">></span><span style="color: #000000"><br />     </span><span style="color: #0000ff">struct</span><span style="color: #000000"> test<br />     {<br />         T i;<br />     };<br />     template </span><span style="color: #000000"><</span><span style="color: #000000">typename S</span><span style="color: #000000">></span><span style="color: #000000"><br />     </span><span style="color: #0000ff">struct</span><span style="color: #000000"> test</span><span style="color: #000000"><</span><span style="color: #0000ff">long</span><span style="color: #000000">, S</span><span style="color: #000000">></span><span style="color: #000000"><br />     {<br />         unsigned </span><span style="color: #0000ff">long</span><span style="color: #000000"> i;<br />     };<br />};<br /></span><span style="color: #0000ff">int</span><span style="color: #000000"> main(</span><span style="color: #0000ff">void</span><span style="color: #000000">)<br />{<br />     CMyClass::test</span><span style="color: #000000"><</span><span style="color: #0000ff">int</span><span style="color: #000000">></span><span style="color: #000000"> test1;<br />     CMyClass::test</span><span style="color: #000000"><</span><span style="color: #0000ff">long</span><span style="color: #000000">></span><span style="color: #000000"> test2;<br />     CMyClass::test</span><span style="color: #000000"><</span><span style="color: #0000ff">char</span><span style="color: #000000">></span><span style="color: #000000"> test3;<br /><br />     cout </span><span style="color: #000000"><<</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">typeid(test1.i) is </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000"><<</span><span style="color: #000000"> typeid(test1.i).name() </span><span style="color: #000000"><<</span><span style="color: #000000"> endl;<br />     cout </span><span style="color: #000000"><<</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">typeid(test2.i) is </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000"><<</span><span style="color: #000000"> typeid(test2.i).name() </span><span style="color: #000000"><<</span><span style="color: #000000"> endl;<br />     cout </span><span style="color: #000000"><<</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">typeid(test3.i) is </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000"><<</span><span style="color: #000000"> typeid(test3.i).name() </span><span style="color: #000000"><<</span><span style="color: #000000"> endl;<br /><br />     </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br /><br />}<br /><br />鍦ㄤ笂闈㈣繖孌典唬鐮佷嬌鐢ㄤ竴涓棤鐢ㄧ殑妯℃澘鍙傛暟鏉ュ疄鐜頒互鍋忕壒浠f浛鐗瑰寲錛屼粠鑰屽寲瑙d簡榪欎釜闂銆傝嚦浜庝負浠涔圴C涓嬭兘澶熸甯哥紪璇戯紝緗戜笂鐨勮祫鏂欒鏄疺C涓嶇鍚堟爣鍑?nbsp;錛?#8220;MSVC </span><span style="color: #0000ff">is</span><span style="color: #000000"> wrong </span><span style="color: #0000ff">in</span><span style="color: #000000"> </span><span style="color: #0000ff">this</span><span style="color: #000000"> </span><span style="color: #0000ff">case</span><span style="color: #000000"> and g</span><span style="color: #000000">++</span><span style="color: #000000"> correct”錛夛紝涓嶈繃榪欑偣鎴戝皻鏈湪C</span><span style="color: #000000">++</span><span style="color: #000000">鏍囧噯涓壘鍒版槑鏂囦緷鎹?br /><br />浣嗘槸榪欐牱涓鏉ュ氨鏈変釜闂錛屽亸鐗瑰寲鍦╒C6涓嬫槸鐢˙UG鐨勶紝鏃犳硶姝e父浣跨敤錛屼篃灝辨槸璇村嚭鏉ョ殑浠g爜灝嗘棤娉曞吋瀹筕C6銆傚浜嶸C6榪欐牱钀戒紞鐨勭紪璇戝櫒錛屽吋瀹瑰畠 鏄病鏈夊お澶х殑蹇呰錛屼絾鏄洖澶存兂鎯籌紝闅鵑亾瑕佸湪瀹氫箟宓屽綾繪ā鏉跨殑鐗瑰寲錛屽氨涓嶈浜嗕箞錛熷繀欏諱嬌鐢ㄥ亸鐗瑰寲鏉ヤ唬鏇夸箞錛烠</span><span style="color: #000000">++</span><span style="color: #000000">瀵規鏄浣曡瀹氱殑鍛紵緲婚槄鐩稿叧璧勬枡鍚庯紝鎴戞壘 鍒頒簡絳旀錛嶏紞瑕佹妸鐗瑰寲鐨勪唬鐮佸啓鍦ㄧ被瀹氫箟鐨勫闈紙瑕佸啓鍦╪amespace涓嬶級錛屽絎竴孌典唬鐮佸簲璇ュ啓鎴愯繖鏍鳳細<br /><br />     <br />#include </span><span style="color: #000000"><</span><span style="color: #000000">iostream</span><span style="color: #000000">></span><span style="color: #000000"><br /></span><span style="color: #0000ff">using</span><span style="color: #000000"> </span><span style="color: #0000ff">namespace</span><span style="color: #000000"> std;<br /><br /></span><span style="color: #0000ff">class</span><span style="color: #000000"> CMyClass<br />{<br /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br />     template </span><span style="color: #000000"><</span><span style="color: #000000">typename T</span><span style="color: #000000">></span><span style="color: #000000"><br />     </span><span style="color: #0000ff">struct</span><span style="color: #000000"> test<br />     {<br />         </span><span style="color: #0000ff">int</span><span style="color: #000000"> i;<br />     };<br />};<br />template </span><span style="color: #000000"><></span><span style="color: #000000"><br /></span><span style="color: #0000ff">struct</span><span style="color: #000000"> CMyClass::test</span><span style="color: #000000"><</span><span style="color: #0000ff">long</span><span style="color: #000000">></span><span style="color: #000000"><br />{<br />     </span><span style="color: #0000ff">long</span><span style="color: #000000"> i;<br />};<br /><br /></span><span style="color: #0000ff">int</span><span style="color: #000000"> main(</span><span style="color: #0000ff">void</span><span style="color: #000000">)<br />{<br />     CMyClass::test</span><span style="color: #000000"><</span><span style="color: #0000ff">int</span><span style="color: #000000">></span><span style="color: #000000"> test1;<br />     CMyClass::test</span><span style="color: #000000"><</span><span style="color: #0000ff">long</span><span style="color: #000000">></span><span style="color: #000000"> test2;<br />     CMyClass::test</span><span style="color: #000000"><</span><span style="color: #0000ff">char</span><span style="color: #000000">></span><span style="color: #000000"> test3;<br /><br />     cout </span><span style="color: #000000"><<</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">typeid(test1.i) is </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000"><<</span><span style="color: #000000"> typeid(test1.i).name() </span><span style="color: #000000"><<</span><span style="color: #000000"> endl;<br />     cout </span><span style="color: #000000"><<</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">typeid(test2.i) is </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000"><<</span><span style="color: #000000"> typeid(test2.i).name() </span><span style="color: #000000"><<</span><span style="color: #000000"> endl;<br />     cout </span><span style="color: #000000"><<</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">typeid(test3.i) is </span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000"><<</span><span style="color: #000000"> typeid(test3.i).name() </span><span style="color: #000000"><<</span><span style="color: #000000"> endl;<br /><br />     </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br />}<br /><br />榪欐牱淇敼鍚庯紝灝卞彲浠ュ湪GCC涓嬬紪璇戦氳繃浜嗭紝鍚屾椂錛孷C6錛孷C8涔熼兘鑳界紪璇戦氳繃錛?br /><br />鎬葷粨涓涓嬪惂錛?br />鍦–</span><span style="color: #000000">++</span><span style="color: #000000">涓紝濡傛灉瑕佸宓屽綾繪ā鏉胯繘琛岀壒鍖栵紝鍒欒涔堜嬌鐢ㄥ亸鐗瑰寲鏉ユ浛浠g壒鍖栵紙澧炲姞涓涓棤鐢ㄧ殑妯℃澘鍙傛暟錛夛紝瑕佷箞灝?nbsp;鐗瑰寲浠g爜鏀懼湪綾誨畾涔変箣澶栥?br /><br />鍚屾牱鐨?闈炴ā鏉垮嚱鏁板叿鏈夋渶楂樼殑浼樺厛鏉?br /></span></div><br /><br /><br /><br />杞嚜:<a >http://jeffreyloo.blog.163.com/blog/static/12176167020106171424608/</a> <img src ="http://www.shnenglu.com/aaxron/aggbug/201317.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2013-06-26 11:51 <a href="http://www.shnenglu.com/aaxron/archive/2013/06/26/201317.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>妯℃澘鐗瑰寲鍜屽亸鐗瑰寲http://www.shnenglu.com/aaxron/archive/2013/06/26/201316.html澶╀笅澶╀笅Wed, 26 Jun 2013 03:38:00 GMThttp://www.shnenglu.com/aaxron/archive/2013/06/26/201316.htmlhttp://www.shnenglu.com/aaxron/comments/201316.htmlhttp://www.shnenglu.com/aaxron/archive/2013/06/26/201316.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/201316.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/201316.html妯℃澘鐗瑰寲鍜屽亸鐗瑰寲
C
++涓殑妯℃澘鍒嗕負綾繪ā鏉垮拰鍑芥暟妯℃澘

·妯℃澘鐨勭壒鍖?br />    
(
1)綾繪ā鏉跨壒鍖?br />鏈夋椂涓轟簡闇瑕?閽堝鐗瑰畾鐨勭被鍨?闇瑕佸妯℃澘榪涜鐗瑰寲,涔熷氨鏄壒孌婂鐞?渚嬪,stack綾繪ā鏉塊拡瀵筨ool綾誨瀷,鍥犱負瀹為檯涓奲ool綾誨瀷鍙渶瑕佷竴涓簩榪涘埗浣嶏紝灝卞彲浠ュ鍏惰繘琛屽瓨鍌?浣跨敤涓涓瓧鎴栬呬竴涓瓧鑺傞兘鏄氮璐瑰瓨鍌ㄧ┖闂寸殑.
template 
<class T>
class stack {};

template
<>
class stack<bool> 

    
//// 
};

涓婅堪瀹氫箟涓璽emplate 
< >鍛婅瘔緙栬瘧鍣ㄨ繖鏄竴涓壒鍖栫殑妯℃澘銆傚茍涓斿湪澹版槑鐗瑰寲妯℃澘涔嬪墠涓瀹氳鏈夐潪鐗瑰寲鐨勫0鏄庯紒騫朵笖涓や釜綾葷殑鍚嶅瓧鏄竴鏍風殑錛?br />    
(
2)鍑芥暟妯℃澘鐨勭壒鍖?br />鐪嬩笅闈㈢殑渚嬪瓙
int main()
{
   
int highest = mymax(5,10);
   
char c = mymax(‘a’, ’z’);
   
const char* p1 = “hello”;
   
const char* p2 = “world”;
   
const char* p = mymax(p1,p2);
   
return 0;
}
鍓嶉潰涓や釜mymax閮借兘榪斿洖姝g‘鐨勭粨鏋?鑰岀涓変釜鍗翠笉鑳?鍥犱負,姝ゆ椂mymax鐩存帴姣旇緝涓や釜鎸囬拡p1 鍜?nbsp;p2 鑰屼笉鏄叾鎸囧悜鐨勫唴瀹?
閽堝榪欑鎯呭喌,褰搈ymax鍑芥暟鐨勫弬鏁扮被鍨嬩負const 
char* 鏃?闇瑕佺壒鍖栥?br />template <class T>
T mymax(
const T t1, const T t2)
{
    
return t1 < t2 ? t2 : t1;
}
template 
<>
const char* mymax(const char* t1,const char* t2)
{
    
return (strcmp(t1,t2) < 0? t2 : t1;
}
鐜板湪mymax(p1,p2)鑳藉榪斿洖姝g‘鐨勭粨鏋滀簡銆?br />
4.妯℃澘鐨勫亸鐗瑰寲
妯℃澘鐨勫亸鐗瑰寲鏄寚闇瑕佹牴鎹ā鏉跨殑鏌愪簺浣嗕笉鏄叏閮ㄧ殑鍙傛暟榪涜鐗瑰寲
(
1) 綾繪ā鏉跨殑鍋忕壒鍖?br />渚嬪c++鏍囧噯搴撲腑鐨勭被vector鐨勫畾涔?br />template <class T, class Allocator>
class vector 

    
// … // 
};

template 
<class Allocator>
class vector<bool, Allocator> 

    
////
};
榪欎釜鍋忕壒鍖栫殑渚嬪瓙涓紝涓涓弬鏁拌緇戝畾鍒癰ool綾誨瀷錛岃屽彟涓涓弬鏁頒粛鏈粦瀹氶渶瑕佺敱鐢ㄦ埛鎸囧畾銆?br />
(
2) 鍑芥暟妯℃澘鐨勫亸鐗瑰寲
涓ユ牸鐨勬潵璇達紝鍑芥暟妯℃澘騫朵笉鏀寔鍋忕壒鍖栵紝浣嗙敱浜庡彲浠ュ鍑芥暟榪涜閲嶈澆錛屾墍浠ュ彲浠ヨ揪鍒扮被浼間簬綾繪ā鏉垮亸鐗瑰寲鐨勬晥鏋溿?br />template 
<class T> void f(T);   (a)
鏍規嵁閲嶈澆瑙勫垯錛屽錛坅錛夎繘琛岄噸杞?br />template 
< class T> void f(T*);   (b)
濡傛灉灝嗭紙a錛夌О涓哄熀妯℃澘錛岄偅涔堬紙b錛夌О涓哄鍩烘ā鏉匡紙a錛夌殑閲嶈澆錛岃岄潪瀵癸紙a錛夌殑鍋忕壒鍖栥侰
++鐨勬爣鍑嗗鍛樹細浠嶅湪瀵逛笅涓涓増鏈腑鏄惁鍏佽鍑芥暟妯℃澘鐨勫亸鐗瑰寲榪涜璁ㄨ銆?br />5.妯℃澘鐗瑰寲鏃剁殑鍖歸厤瑙勫垯
(
1) 綾繪ā鏉跨殑鍖歸厤瑙勫垯
鏈浼樺寲鐨勪紭浜庢鐗瑰寲鐨勶紝鍗蟲ā鏉垮弬鏁版渶綺劇‘鍖歸厤鐨勫叿鏈夋渶楂樼殑浼樺厛鏉?br />渚嬪瓙錛?br />template 
<class T> class vector
{
    
////
}; // (a)   鏅氬瀷
template <class T> class vector<T*>
{
    
////
}; // (b) 瀵規寚閽堢被鍨嬬壒鍖?/span>
template <>
class vector <void*>
{
    
////
}; // (c) 瀵箆oid*榪涜鐗瑰寲
姣忎釜綾誨瀷閮藉彲浠ョ敤浣滄櫘閫氬瀷錛坅錛夌殑鍙傛暟錛屼絾鍙湁鎸囬拡綾誨瀷鎵嶈兘鐢ㄤ綔錛坆錛夌殑鍙傛暟錛岃屽彧鏈塿oid*鎵嶈兘浣滀負(c)鐨勫弬鏁?br />
(
2) 鍑芥暟妯℃澘鐨勫尮閰嶈鍒?br />闈炴ā鏉垮嚱鏁板叿鏈夋渶楂樼殑浼樺厛鏉冦傚鏋滀笉瀛樺湪鍖歸厤鐨勯潪妯℃澘鍑芥暟鐨勮瘽錛岄偅涔堟渶鍖歸厤鐨勫拰鏈鐗瑰寲鐨勫嚱鏁板叿鏈夐珮浼樺厛鏉?br />渚嬪瓙錛?br />template <class T> void f(T);   // (d)
template <class T> void f(int, T, double); // (e)
template <class T> void f(T*);   // (f)
template <> void f<int> (int) ; // (g)
void f(double);   // (h)
bool b;
int i;
double d;
f(b); 
// 浠?nbsp;T = bool 璋冪敤 錛坉錛?/span>
f(i,42,d) // 浠?nbsp;T = int 璋冪敤錛坋錛?/span>
f(&i) ; // 浠?nbsp;T = int* 璋冪敤錛坒錛?/span>
f(d);   //   璋冪敤錛坔錛?/span>

澶╀笅 2013-06-26 11:38 鍙戣〃璇勮
]]>
C++ 楂樼駭涓婚涔嬫ā鏉跨壒鍖?/title><link>http://www.shnenglu.com/aaxron/archive/2013/06/26/201314.html</link><dc:creator>澶╀笅</dc:creator><author>澶╀笅</author><pubDate>Wed, 26 Jun 2013 03:36:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2013/06/26/201314.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/201314.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2013/06/26/201314.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/201314.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/201314.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">C</span><span style="color: #000000">++</span><span style="color: #000000"> 楂樼駭涓婚涔嬫ā鏉跨壒鍖?br />鎴戜滑寰堥毦鍐欏嚭鎵鏈夊彲鑳借瀹炰緥鍖栫殑綾誨瀷閮藉悎閫傜殑妯℃澘銆傛煇浜涙儏鍐典笅錛岄氱敤妯℃澘瀹氫箟瀵逛簬鏌愪釜綾誨瀷鍙兘鏄畬鍏ㄩ敊璇殑錛屾墍浠ユ垜浠渶瑕佽兘澶熷疄鐜板鐞嗘煇浜涚壒孌婃儏鍐碉紝鐗瑰寲鐨勬蹇靛彉鏄姝ゃ?br />compare鍑芥暟鍜孮ueue綾繪槸榪欎釜闂鐨勫緢濂戒緥瀛愩傚洜涓轟笌C椋庢牸瀛楃涓蹭竴璧蜂嬌鐢ㄦ椂錛屼粬浠兘涓嶈兘姝g‘宸ヤ綔銆?br />template </span><span style="color: #000000"><</span><span style="color: #000000">typename T</span><span style="color: #000000">></span><span style="color: #000000"><br /></span><span style="color: #0000ff">int</span><span style="color: #000000"> compare(</span><span style="color: #0000ff">const</span><span style="color: #000000"> T </span><span style="color: #000000">&</span><span style="color: #000000">v1,</span><span style="color: #0000ff">const</span><span style="color: #000000"> T </span><span style="color: #000000">&</span><span style="color: #000000">v2)<br />{<br />    </span><span style="color: #0000ff">if</span><span style="color: #000000">(v1 </span><span style="color: #000000"><</span><span style="color: #000000"> v2) </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;<br />    </span><span style="color: #0000ff">if</span><span style="color: #000000">(v2 </span><span style="color: #000000"><</span><span style="color: #000000"> v1) </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">;<br />    </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br />}<br />濡傛灉鐢ㄤ袱涓猚onst </span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000"> 瀹炲弬璋冪敤榪欎釜妯℃澘瀹氫箟錛屽嚱鏁板皢姣旇緝鎸囬拡鐨勫箋備篃灝辨槸姣旇緝涓や釜鎸囬拡鍦ㄥ唴瀛樹腑鐨勭浉瀵逛綅緗紝鍗村茍娌℃湁璇存槑涓庢寚閽堟墍鎸囨暟緇勭殑鍐呭鏈夊叧鐨勪換浣曚簨鎯呫?br />涓轟簡鑳藉灝哻ompare鍑芥暟鐢ㄤ簬瀛楃涓詫紝蹇呴』鎻愪緵涓涓煡閬撴庢牱姣旇緝C椋庢牸瀛楃涓茬殑鐗規畩瀹氫箟銆傝繖浜涘氨琚О浣滄槸鐗瑰寲鐨勶紝瀹冨妯℃澘鐨勭敤鎴瘋岃█鏄忔槑鐨勩?br /><br /></span><span style="color: #000000">1</span><span style="color: #000000">. 鍑芥暟妯℃澘鐨勭壒鍖?br />鐗瑰寲褰㈠紡錛?br /></span><span style="color: #000000">-</span><span style="color: #000000"> 鍏抽敭瀛梩emplate鍚庨潰鎺ヤ竴瀵圭┖鐨勫皷鎷彿</span><span style="color: #000000"><></span><span style="color: #000000">;<br /></span><span style="color: #000000">-</span><span style="color: #000000"> 鍐嶆帴妯℃澘鍚嶅拰涓瀵瑰皷鎷彿</span><span style="color: #000000"><></span><span style="color: #000000">錛屽皷鎷彿涓寚瀹氳繖涓壒鍖栧畾涔夌殑妯℃澘鍙傛暟錛?br /></span><span style="color: #000000">-</span><span style="color: #000000"> 鍑芥暟褰㈠弬琛?br /></span><span style="color: #000000">-</span><span style="color: #000000"> 鍑芥暟浣?br />template</span><span style="color: #000000"><></span><span style="color: #000000"><br /></span><span style="color: #0000ff">int</span><span style="color: #000000"> compare</span><span style="color: #000000"><</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">char</span><span style="color: #000000">*></span><span style="color: #000000"> (</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000"> </span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #000000">&</span><span style="color: #000000">v1,</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000"> </span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #000000">&</span><span style="color: #000000">v2)<br />{<br />    </span><span style="color: #0000ff">return</span><span style="color: #000000"> strcmp(v1,v2);<br />}<br />鐗瑰寲鐨勫0鏄庡繀欏諱笌 瀵瑰簲鐨勬ā鏉跨浉鍖歸厤銆傜被鍨嬪艦鍙傚浐瀹氫負const </span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">銆?br />鍥犳錛屽嚱鏁板艦鍙傛槸const </span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000"> 鐨刢onst寮曠敤銆傚綋璋冪敤compare鍑芥暟鐨勬椂鍊欙紝<br />浼犵粰瀹冧袱涓瓧絎︽寚閽堬紝緙栬瘧鍣ㄥ皢璋冪敤鐗瑰寲鐗堟湰銆傝屼笉璋冪敤涓婇潰鐨勬硾鍨嬬増鏈?br /></span><span style="color: #0000ff">const</span><span style="color: #000000">  </span><span style="color: #0000ff">char</span><span style="color: #000000"> </span><span style="color: #000000">*</span><span style="color: #000000">cp1 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">world</span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">*</span><span style="color: #000000">cp2 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">hi</span><span style="color: #000000">"</span><span style="color: #000000">;<br /></span><span style="color: #0000ff">int</span><span style="color: #000000"> i1, i2;<br />compare(cp1, cp2); </span><span style="color: #008000">//</span><span style="color: #008000">璋冪敤鐗瑰寲鍑芥暟妯℃澘</span><span style="color: #008000"><br /></span><span style="color: #000000">compare(i1, i2);  </span><span style="color: #008000">//</span><span style="color: #008000">璋冪敤娉涘瀷鍑芥暟妯℃澘</span><span style="color: #008000"><br /></span><span style="color: #000000">娉ㄦ剰錛?br /></span><span style="color: #000000">*</span><span style="color: #000000"> 鍑芥暟妯℃澘鐗瑰寲鏃秚emplate</span><span style="color: #000000"><></span><span style="color: #000000">涓嶈兘鐪佺暐錛屽鏋滅己灝戠粨鏋滄槸澹版槑璇ュ嚱鏁扮殑閲嶈澆銆?br /></span><span style="color: #000000">*</span><span style="color: #000000"> 蹇呴』鍖呭惈鍑芥暟褰㈠弬鍒楄〃銆傚鏋滃彲浠ヤ粠褰㈠弬鍒楄〃鎺ㄦ柇妯℃澘瀹炲弬錛屽垯涓嶅繀鏄劇ず鎸囧畾妯℃澘瀹炲弬銆?br /></span><span style="color: #000000">*</span><span style="color: #000000"> 濡傛灉紼嬪簭鐢卞涓枃浠舵瀯鎴愶紝妯℃澘鐗瑰寲鐨勫0鏄庡繀欏誨湪浣跨敤璇ョ壒鍖栫殑姣忎釜鏂囦歡涓嚭鐜般?br /><br /></span><span style="color: #000000">2</span><span style="color: #000000">.綾繪ā鏉跨殑鐗瑰寲<br />褰撲嬌鐢–椋庢牸瀛楃涓叉椂錛孮ueue綾誨叿鏈?nbsp;compare鍑芥暟鐩鎬技鐨勯棶棰樸傞棶棰樺氨澶勫湪push鍑芥暟涓紝璇ュ嚱鏁板鍒剁粰瀹氱殑鍊間互鍒涘緩Queue涓殑鏂板厓绱犮傞粯璁ゆ儏鍐典笅錛屽鍒禖椋庢牸瀛楃涓插彧浼氬鍒舵寚閽堬紝涓嶄細澶嶅埗瀛楃銆傝屾樉鐒跺鍒舵寚閽堝皢鍑虹幇涓緋誨垪鐨勪弗閲嶉棶棰樸備負浜嗚В鍐沖鍒禖椋庢牸瀛楃涓茬殑闂錛岄渶瑕佷負const </span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">瀹氫箟鏁翠釜綾葷殑鐗瑰寲鐗堟湰:<br />template</span><span style="color: #000000"><></span><span style="color: #000000"> <br /></span><span style="color: #0000ff">class</span><span style="color: #000000"> Queue</span><span style="color: #000000"><</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">char</span><span style="color: #000000">*></span><span style="color: #000000"> <br />{<br /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br />    </span><span style="color: #0000ff">void</span><span style="color: #000000"> push(</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">);<br />    </span><span style="color: #0000ff">void</span><span style="color: #000000"> pop() {real_queue.pop();}<br />    </span><span style="color: #0000ff">bool</span><span style="color: #000000"> empty() </span><span style="color: #0000ff">const</span><span style="color: #000000"> {</span><span style="color: #0000ff">return</span><span style="color: #000000"> real_queue.front();}<br />    </span><span style="color: #008000">//</span><span style="color: #008000">榪斿洖綾誨瀷涓庢ā鏉垮弬鏁扮被鍨嬩笉鍚?/span><span style="color: #008000"><br /></span><span style="color: #000000">    std::</span><span style="color: #0000ff">string</span><span style="color: #000000"> front() {</span><span style="color: #0000ff">return</span><span style="color: #000000"> real_queue.front();}<br />    </span><span style="color: #0000ff">const</span><span style="color: #000000"> std::</span><span style="color: #0000ff">string</span><span style="color: #000000"> </span><span style="color: #000000">&</span><span style="color: #000000">front() </span><span style="color: #0000ff">const</span><span style="color: #000000"> {</span><span style="color: #0000ff">return</span><span style="color: #000000"> real_queue.front();}<br /></span><span style="color: #0000ff">private</span><span style="color: #000000"> :<br />    Queue</span><span style="color: #000000"><</span><span style="color: #000000">std::</span><span style="color: #0000ff">string</span><span style="color: #000000">></span><span style="color: #000000"> real_queue;<br />};<br /><br />緇橯ueue涓涓柊鐨勬暟鎹厓绱?string瀵硅薄鐨凲ueue銆傚湪綾葷殑澶栭儴瀹氫箟涓涓垚鍛?<br /></span><span style="color: #0000ff">void</span><span style="color: #000000"> Queue</span><span style="color: #000000"><</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">char</span><span style="color: #000000">*></span><span style="color: #000000">::push (</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000"> val)<br />{<br />    </span><span style="color: #0000ff">return</span><span style="color: #000000"> real_queue.push(val);<br />}<br />榪欎釜鍑芥暟閫氳繃璋冪敤read_queue鐨刾ush鍑芥暟鎶妚al鎸囧悜鐨勬暟緇勫鍒跺埌鏈懡鍚嶇殑string 瀵硅薄涓傚綋闇瑕佸嚭闃熷垪鐨勬椂鍊欒皟鐢ㄧ浉搴攔eal_queue.pop()鍑芥暟鍗寵繑鍥炰簡榪欎釜string錛屼粠鑰岃В鍐充簡涓嶇敤澶嶅埗鎸囬拡鐨勯棶棰樸?br /><br /></span><span style="color: #000000">3</span><span style="color: #000000">.鐗瑰寲鎴愬憳鑰屼笉鐗瑰寲綾誨湪涓婁緥鐨勫疄鐜頒腑錛屾垜浠彲浠ユ崲涓縐嶆柟娉曪紝鍗充笉闇瑕佺壒鍖栫被錛岃屽彧闇瑕佺壒鍖栫被鐨勬垚鍛樺嚱鏁皃ush銆乸op銆傛牴鎹嚱鏁版ā鏉跨壒鍖栫殑瑕佹眰錛?br />template </span><span style="color: #000000"><></span><span style="color: #000000"><br /></span><span style="color: #0000ff">void</span><span style="color: #000000"> Queue</span><span style="color: #000000"><</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">char</span><span style="color: #000000">*></span><span style="color: #000000">::push(</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">char</span><span style="color: #000000"> </span><span style="color: #000000">*</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #000000">&</span><span style="color: #000000">val)<br />{<br />    </span><span style="color: #0000ff">char</span><span style="color: #000000"> </span><span style="color: #000000">*</span><span style="color: #000000"> new_item </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> </span><span style="color: #0000ff">char</span><span style="color: #000000">[strlen(val)</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">];<br />    strncpy(new_item, val, strlen(val)</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">);<br />    QueueItem</span><span style="color: #000000"><</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">char</span><span style="color: #000000">*></span><span style="color: #000000"> </span><span style="color: #000000">*</span><span style="color: #000000">pt </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> QueueItem</span><span style="color: #000000"><</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">char</span><span style="color: #000000">*></span><span style="color: #000000">(new_item);<br />        <br />    </span><span style="color: #0000ff">if</span><span style="color: #000000">(empty())<br />        head </span><span style="color: #000000">=</span><span style="color: #000000"> tail </span><span style="color: #000000">=</span><span style="color: #000000"> pt;  </span><span style="color: #008000">//</span><span style="color: #008000">闃熷垪涓病鏈夊厓绱?/span><span style="color: #008000"><br /></span><span style="color: #000000">    eles{<br />        tail</span><span style="color: #000000">-></span><span style="color: #000000">next </span><span style="color: #000000">=</span><span style="color: #000000"> pt; </span><span style="color: #008000">//</span><span style="color: #008000">娣誨姞鏂板厓绱犲埌鍒楀熬</span><span style="color: #008000"><br /></span><span style="color: #000000">        tail </span><span style="color: #000000">=</span><span style="color: #000000"> pt;<br />    }<br />}<br />template</span><span style="color: #000000"><></span><span style="color: #000000"><br /></span><span style="color: #0000ff">void</span><span style="color: #000000"> Queue</span><span style="color: #000000"><</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">char</span><span style="color: #000000">*></span><span style="color: #000000">::pop()<br />{<br />    QueueItem</span><span style="color: #000000"><</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">char</span><span style="color: #000000">*></span><span style="color: #000000"> </span><span style="color: #000000">*</span><span style="color: #000000">p </span><span style="color: #000000">=</span><span style="color: #000000"> head;<br />    delete head</span><span style="color: #000000">-></span><span style="color: #000000">item;  </span><span style="color: #008000">//</span><span style="color: #008000">鍒犻櫎闃熼鍏冪礌</span><span style="color: #008000"><br /></span><span style="color: #000000">    head </span><span style="color: #000000">=</span><span style="color: #000000"> head</span><span style="color: #000000">-></span><span style="color: #000000">next;  </span><span style="color: #008000">//</span><span style="color: #008000">鎸囧悜褰撳墠闃熼鍏冪礌</span><span style="color: #008000"><br /></span><span style="color: #000000">    delete p;            </span><span style="color: #008000">//</span><span style="color: #008000">鍒犻櫎闆舵椂鎸囬拡</span><span style="color: #008000"><br /></span><span style="color: #000000">}<br /><br /></span><span style="color: #000000">4</span><span style="color: #000000">.綾繪ā鏉跨殑閮ㄥ垎鐗瑰寲<br />    濡傛灉綾繪ā鏉挎湁涓涓互涓婄殑妯℃澘褰㈠弬錛屾垜浠緢鏈夊彲鑳藉彧瑕佺壒鍖栨煇浜涙ā鏉垮艦鍙?br />    鑰屼笉鏄叏閮ㄥ艦鍙傘傝繖鏃舵垜浠氨闇瑕佷嬌鐢ㄧ被鐨勯儴鍒嗙壒鍖栥?br /></span><span style="color: #008000">//</span><span style="color: #008000">瀹氫箟妯℃澘綾?/span><span style="color: #008000"><br /></span><span style="color: #000000">template </span><span style="color: #000000"><</span><span style="color: #0000ff">class</span><span style="color: #000000"> T1, </span><span style="color: #0000ff">class</span><span style="color: #000000"> T2</span><span style="color: #000000">></span><span style="color: #000000"><br /></span><span style="color: #0000ff">class</span><span style="color: #000000"> some_template{<br />    </span><span style="color: #008000">//</span><span style="color: #008000"> <img src="http://www.shnenglu.com/Images/dot.gif" alt="" /></span><span style="color: #008000"><br /></span><span style="color: #000000">};<br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">瀹氫箟妯℃澘綾葷殑閮ㄥ垎鐗瑰寲錛歍2綾誨瀷鍥哄畾錛岄儴鍒嗙壒鍖朤1綾誨瀷</span><span style="color: #008000"><br /></span><span style="color: #000000">template</span><span style="color: #000000"><</span><span style="color: #0000ff">class</span><span style="color: #000000"> T1</span><span style="color: #000000">></span><span style="color: #000000"><br /></span><span style="color: #0000ff">class</span><span style="color: #000000"> some_template</span><span style="color: #000000"><</span><span style="color: #000000">T1, </span><span style="color: #0000ff">int</span><span style="color: #000000">></span><span style="color: #000000">{<br />    </span><span style="color: #008000">//</span><span style="color: #008000"> <img src="http://www.shnenglu.com/Images/dot.gif" alt="" /></span><span style="color: #008000"><br /></span><span style="color: #000000">};<br /></span><span style="color: #008000">//</span><span style="color: #008000">浣跨敤綾繪ā鏉跨殑閮ㄥ垎鐗瑰寲</span><span style="color: #008000"><br /></span><span style="color: #000000">some_template</span><span style="color: #000000"><</span><span style="color: #0000ff">int</span><span style="color: #000000">, </span><span style="color: #0000ff">string</span><span style="color: #000000">></span><span style="color: #000000"> foo; </span><span style="color: #008000">//</span><span style="color: #008000">浣跨敤妯℃澘綾?/span><span style="color: #008000"><br /></span><span style="color: #000000">some_template</span><span style="color: #000000"><</span><span style="color: #0000ff">string</span><span style="color: #000000">,</span><span style="color: #0000ff">int</span><span style="color: #000000">></span><span style="color: #000000"> bar;  </span><span style="color: #008000">//</span><span style="color: #008000">浣跨敤妯℃澘綾葷殑閮ㄥ垎鐗瑰寲</span><span style="color: #008000"><br /></span><span style="color: #000000">閫氳繃浣跨敤妯℃澘鐗瑰寲鑳借В鍐充竴浜涘湪閫氬父鎴栬呴氱敤鎯呭喌涓嬫棤娉曡В鍐崇殑鐗規畩闂銆傚湪鎺屾彙浜嗗熀鏈殑璇硶瑙勮寖鍜屽疄鐜版柟娉曞悗渚垮彲浠ュ姞浠ュ簲鐢ㄣ?/span></div> <img src ="http://www.shnenglu.com/aaxron/aggbug/201314.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2013-06-26 11:36 <a href="http://www.shnenglu.com/aaxron/archive/2013/06/26/201314.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>妯℃澘鐗瑰寲http://www.shnenglu.com/aaxron/archive/2012/02/07/165101.html澶╀笅澶╀笅Tue, 07 Feb 2012 06:45:00 GMThttp://www.shnenglu.com/aaxron/archive/2012/02/07/165101.htmlhttp://www.shnenglu.com/aaxron/comments/165101.htmlhttp://www.shnenglu.com/aaxron/archive/2012/02/07/165101.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/165101.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/165101.html#include <cstdio>
#include 
<cstring>

template 
<class T>
T mymax(
const T t1, const T t2)
{
    
return t1 < t2 ? t2 : t1;
}

//妯℃澘鐗瑰寲
//鐗瑰寲涓虹粷瀵圭被鍨?br />//涓婅堪瀹氫箟涓璽emplate < >鍛婅瘔緙栬瘧鍣ㄨ繖鏄竴涓壒鍖栫殑妯℃澘銆傚茍涓斿湪澹版槑鐗瑰寲妯℃澘涔嬪墠涓瀹氳鏈夐潪鐗瑰寲鐨勫0鏄庯紒騫朵笖涓や釜綾葷殑鍚嶅瓧鏄竴鏍風殑錛?br />//鐗瑰寲鐨勬ā鏉垮繀欏繪斁鍦ㄩ潪鐗瑰寲鐨勬ā鏉跨殑涔嬪悗
//鍚﹀垯緙栬瘧鍣ㄦ緇欎綘鐪?濡備笅:
//'const char *mymax(const char *,const char *)' is not a specialization of a function template

template
<>
const char* mymax(const char* t1,const char* t2)
{
    
return (strcmp(t1,t2) < 0? t2 : t1;
}

/*
闈炴ā鏉垮嚱鏁?br />闈炴ā鏉垮嚱鏁板叿鏈夋渶楂樼殑浼樺厛鏉?br />const char* mymax(const char* t1,const char* t2)
{
    return (strcmp(t1,t2) < 0) ? t2 : t1;
}
*/

int main()
{
    
int highest = mymax(5,10);
    
char c = mymax('a''z');
    
const char* p1 = "hello";
    
const char* p2 = "world";
    
const char* p = mymax(p1,p2);    
    
return 0;
}



澶╀笅 2012-02-07 14:45 鍙戣〃璇勮
]]>
久久精品人妻一区二区三区| 99国产欧美精品久久久蜜芽| 韩国三级大全久久网站| 久久无码国产专区精品| 久久久久国产视频电影| 777久久精品一区二区三区无码| 成人综合伊人五月婷久久| 看久久久久久a级毛片| 久久精品国产亚洲av麻豆色欲| 中文字幕久久精品无码| 久久棈精品久久久久久噜噜| 一本一本久久aa综合精品 | 国产婷婷成人久久Av免费高清| 亚洲国产欧洲综合997久久| 五月丁香综合激情六月久久| 中文字幕日本人妻久久久免费| 亚洲人成伊人成综合网久久久| 久久人人爽人人爽人人片AV麻烦 | 久久久久免费看成人影片| 麻豆亚洲AV永久无码精品久久 | 亚洲综合婷婷久久| 久久伊人亚洲AV无码网站| 久久婷婷色综合一区二区| 久久香综合精品久久伊人| 美女写真久久影院| 四虎久久影院| 久久久噜噜噜久久熟女AA片 | 亚洲国产精品嫩草影院久久 | 久久99精品久久久久久久不卡| 久久国产亚洲精品无码| 精品视频久久久久| 人妻无码久久一区二区三区免费| 久久91精品久久91综合| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 中文字幕久久精品无码| 88久久精品无码一区二区毛片 | 成人亚洲欧美久久久久| 国色天香久久久久久久小说| 91精品国产91久久久久久蜜臀| 777午夜精品久久av蜜臀| 国产综合精品久久亚洲|