锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久不射中文字幕,欧美日韩国产精品一卡,欧美日韩高清不卡http://m.shnenglu.com/zerolee/archive/2012/06/17/179150.htmlZero LeeZero LeeSun, 17 Jun 2012 02:37:00 GMThttp://m.shnenglu.com/zerolee/archive/2012/06/17/179150.htmlhttp://m.shnenglu.com/zerolee/comments/179150.htmlhttp://m.shnenglu.com/zerolee/archive/2012/06/17/179150.html#Feedback0http://m.shnenglu.com/zerolee/comments/commentRss/179150.htmlhttp://m.shnenglu.com/zerolee/services/trackbacks/179150.html http://en.wikipedia.org/wiki/Allocator_(C%2B%2B) 

1. 鍦℅NU C++涓紝STL allocator涓ユ牸閬靛畧C++鐨勬爣鍑嗭細
鐪嬩竴涓嬬殑浠g爜錛氾紙瀹氫箟鍦╞its/allocator.h鏂囦歡涓級
 1 namespace std
 2 {
 3   template<typename _Tp>
 4     class allocator;
 5 
 6   template<>
 7     class allocator<void>
 8     {
 9     public:
10       typedef size_t      size_type;
11       typedef ptrdiff_t   difference_type;
12       typedef void*       pointer;
13       typedef const void* const_pointer;
14       typedef void        value_type;
15 
16       template<typename _Tp1>
17         struct rebind
18         { typedef allocator<_Tp1> other; };
19     };
20 
21   /**
22    *  @brief  The "standard" allocator, as per [20.4].
23    *
24    *  (See @link Allocators allocators info @endlink for more.)
25    */
26   template<typename _Tp>
27     class allocator: public ___glibcxx_base_allocator<_Tp>
28     {
29    public:
30       typedef size_t     size_type;
31       typedef ptrdiff_t  difference_type;
32       typedef _Tp*       pointer;
33       typedef const _Tp* const_pointer;
34       typedef _Tp&       reference;
35       typedef const _Tp& const_reference;
36 
37       typedef _Tp        value_type;
38 
39       template<typename _Tp1>
40         struct rebind
41         { typedef allocator<_Tp1> other; };
42 
43       allocator() throw() { }
44 
45       allocator(const allocator& a) throw()
46       : ___glibcxx_base_allocator<_Tp>(a) { }
47 
48       template<typename _Tp1>
49         allocator(const allocator<_Tp1>&) throw() { }
50 
51       ~allocator() throw() { }
52 
53       // Inherit everything else.
54     };
55 
56   template<typename _T1, typename _T2>
57     inline bool
58     operator==(const allocator<_T1>&, const allocator<_T2>&)
59     { return true; }
60 
61   template<typename _T1, typename _T2>
62     inline bool
63     operator!=(const allocator<_T1>&, const allocator<_T2>&)
64     { return false; }
65 
66   // Inhibit implicit instantiations for required instantiations,
67   // which are defined via explicit instantiations elsewhere.
68   // NB: This syntax is a GNU extension.
69 #if _GLIBCXX_EXTERN_TEMPLATE
70   extern template class allocator<char>;
71 
72   extern template class allocator<wchar_t>;
73 #endif
74 
75   // Undefine.
76 #undef ___glibcxx_base_allocator
77 } // namespace std
78 

template ___glibcxx_base_allocator 瀹氫箟鍦ㄥ叿浣撶殑騫沖彴鐩稿叧鐨勫ご鏂囦歡涓紝渚嬪i386-redhat-linux/bits/c++allocator.h:
鍙互鐪嬪嚭GNU c++鐨刟llocator鍏跺疄閲囩敤鐨勬槸new/delete-based allocation.

 1 namespace __gnu_cxx
 2 {
 3   /**
 4    *  @brief  An allocator that uses global new, as per [20.4].
 5    *
 6    *  This is precisely the allocator defined in the C++ Standard.
 7    *    - all allocation calls operator new
 8    *    - all deallocation calls operator delete
 9    *
10    *  (See @link Allocators allocators info @endlink for more.)
11    */
12   template<typename _Tp>
13     class new_allocator
14     {
15     public:
16       typedef size_t     size_type;
17       typedef ptrdiff_t  difference_type;
18       typedef _Tp*       pointer;
19       typedef const _Tp* const_pointer;
20       typedef _Tp&       reference;
21       typedef const _Tp& const_reference;
22       typedef _Tp        value_type;
23 
24       template<typename _Tp1>
25         struct rebind
26         { typedef new_allocator<_Tp1> other; };
27 
28       new_allocator() throw() { }
29 
30       new_allocator(const new_allocator&) throw() { }
31 
32       template<typename _Tp1>
33         new_allocator(const new_allocator<_Tp1>&) throw() { }
34 
35       ~new_allocator() throw() { }
36 
37 
38       pointer
39       address(reference __x) const { return &__x; }
40 
41       const_pointer
42       address(const_reference __x) const { return &__x; }
43 
44       // NB: __n is permitted to be 0.  The C++ standard says nothing
45       // about what the return value is when __n == 0.
46       pointer
47       allocate(size_type __n, const void* = 0)
48       { return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); }
49 
50       // __p is not permitted to be a null pointer.
51       void
52       deallocate(pointer __p, size_type)
53       { ::operator delete(__p); }
54 
55       size_type
56       max_size() const throw()
57       { return size_t(-1) / sizeof(_Tp); }
58 
59       // _GLIBCXX_RESOLVE_LIB_DEFECTS
60       // 402. wrong new expression in [some_] allocator::construct
61       void
62       construct(pointer __p, const _Tp& __val)
63       { ::new(__p) _Tp(__val); }
64 
65       void
66       destroy(pointer __p) { __p->~_Tp(); }
67     };
68 
69   template<typename _Tp>
70     inline bool
71     operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
72     { return true; }
73 
74 
75   template<typename _Tp>
76     inline bool
77     operator!=(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
78     { return false; }
79 } // namespace __gnu_cxx
80 


Zero Lee 2012-06-17 10:37 鍙戣〃璇勮
]]>
濡備綍灝嗕竴鐗囧唴瀛橀摼鎺ユ垚閾捐〃http://m.shnenglu.com/zerolee/archive/2012/06/16/179073.htmlZero LeeZero LeeSat, 16 Jun 2012 10:38:00 GMThttp://m.shnenglu.com/zerolee/archive/2012/06/16/179073.htmlhttp://m.shnenglu.com/zerolee/comments/179073.htmlhttp://m.shnenglu.com/zerolee/archive/2012/06/16/179073.html#Feedback0http://m.shnenglu.com/zerolee/comments/commentRss/179073.htmlhttp://m.shnenglu.com/zerolee/services/trackbacks/179073.html
榪欓噷緇欏嚭SGI STL鍐呭瓨鍒嗛厤鍣ㄧ殑涓涓畝鍗曞疄鐜幫細
棣栧厛瀹氫箟涓涓猽nion鏁版嵁緇撴瀯錛?br />
1 union obj {
2     union obj* free_list_link;
3     char client_data[1];
4 };

榪欎釜union緇撴瀯浣撶殑鏈澶уぇ灝忎負4bytes 錛堝湪32bits 騫沖彴涓婏級錛?bytes 錛堝湪64bits騫沖彴涓婏級銆?br />
鍋囪閭g墖鍐呭瓨鐨勫湴鍧涓篶hunk錛岄偅涔堟垜浠彲浠ヨ繖鏍峰仛錛?  

 1 obj* current_obj, *next_obj;
 2
 next_obj = (obj*)chunk;
 3 for (int i = 0; ; i++) {
 4     current_obj = next_obj;
 5     next_obj = (obj*)((char*)next_obj + m);
 6     if (n - 1 == i) {
 7         current_obj -> free_list_link = 0;
 8         break;
 9     } else {
10         current_obj -> free_list_link = next_obj;
11     }
12 }
13 


Zero Lee 2012-06-16 18:38 鍙戣〃璇勮
]]>
[杞澆] STL allocator鐨勪粙緇嶅拰涓涓熀浜巑alloc/free鐨刟llocator鐨勭畝鍗曞疄鐜?/title><link>http://m.shnenglu.com/zerolee/archive/2012/06/16/179042.html</link><dc:creator>Zero Lee</dc:creator><author>Zero Lee</author><pubDate>Sat, 16 Jun 2012 04:13:00 GMT</pubDate><guid>http://m.shnenglu.com/zerolee/archive/2012/06/16/179042.html</guid><wfw:comment>http://m.shnenglu.com/zerolee/comments/179042.html</wfw:comment><comments>http://m.shnenglu.com/zerolee/archive/2012/06/16/179042.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zerolee/comments/commentRss/179042.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zerolee/services/trackbacks/179042.html</trackback:ping><description><![CDATA[     鎽樿: Allocators are one of the most mysterious parts of the C++ Standard library. Allocators are rarely used explicitly; the Standard doesn't make it clear when they should ever be used. Today's allocators...  <a href='http://m.shnenglu.com/zerolee/archive/2012/06/16/179042.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/zerolee/aggbug/179042.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zerolee/" target="_blank">Zero Lee</a> 2012-06-16 12:13 <a href="http://m.shnenglu.com/zerolee/archive/2012/06/16/179042.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Memory Poolhttp://m.shnenglu.com/zerolee/archive/2012/06/16/179032.htmlZero LeeZero LeeSat, 16 Jun 2012 02:40:00 GMThttp://m.shnenglu.com/zerolee/archive/2012/06/16/179032.htmlhttp://m.shnenglu.com/zerolee/comments/179032.htmlhttp://m.shnenglu.com/zerolee/archive/2012/06/16/179032.html#Feedback0http://m.shnenglu.com/zerolee/comments/commentRss/179032.htmlhttp://m.shnenglu.com/zerolee/services/trackbacks/179032.html

Zero Lee 2012-06-16 10:40 鍙戣〃璇勮
]]>
[杞琞澶氱嚎紼嬮槦鍒楃殑綆楁硶浼樺寲http://m.shnenglu.com/zerolee/archive/2012/06/05/177651.htmlZero LeeZero LeeTue, 05 Jun 2012 06:26:00 GMThttp://m.shnenglu.com/zerolee/archive/2012/06/05/177651.htmlhttp://m.shnenglu.com/zerolee/comments/177651.htmlhttp://m.shnenglu.com/zerolee/archive/2012/06/05/177651.html#Feedback0http://m.shnenglu.com/zerolee/comments/commentRss/177651.htmlhttp://m.shnenglu.com/zerolee/services/trackbacks/177651.html闃呰鍏ㄦ枃

Zero Lee 2012-06-05 14:26 鍙戣〃璇勮
]]>
姹備竴涓鏁存暟鐨勫鉤鏂規牴紼嬪簭瀹炵幇http://m.shnenglu.com/zerolee/archive/2011/10/19/158661.htmlZero LeeZero LeeWed, 19 Oct 2011 01:37:00 GMThttp://m.shnenglu.com/zerolee/archive/2011/10/19/158661.htmlhttp://m.shnenglu.com/zerolee/comments/158661.htmlhttp://m.shnenglu.com/zerolee/archive/2011/10/19/158661.html#Feedback0http://m.shnenglu.com/zerolee/comments/commentRss/158661.htmlhttp://m.shnenglu.com/zerolee/services/trackbacks/158661.html閲囩敤鍔犳硶閫掑鐨勬柟寮忔潵浠f浛涔樻硶涓嶯榪涜姣旇緝錛岄掑鏄寜鐓х瓑宸暟鍒楃殑鏂瑰紡銆?br />
 1 int square(int n)
 2 {
 3     int tmp = 0;
 4     for (int i = 1; i < n; i++) {
 5         tmp += 2*(i-1)+1;
 6         if (tmp == n)
 7             return i;
 8         continue;
 9     }
10     if (n!=0) {
11         printf("no integer sqare found!\n");
12         tmp = -1;
13     }
14     return tmp;
15 }
16 


Zero Lee 2011-10-19 09:37 鍙戣〃璇勮
]]>
涓緇勬暟鐨勫叏鎺掑垪鍜岀粍鍚堢▼搴忓疄鐜?/title><link>http://m.shnenglu.com/zerolee/archive/2011/10/19/158660.html</link><dc:creator>Zero Lee</dc:creator><author>Zero Lee</author><pubDate>Wed, 19 Oct 2011 01:34:00 GMT</pubDate><guid>http://m.shnenglu.com/zerolee/archive/2011/10/19/158660.html</guid><wfw:comment>http://m.shnenglu.com/zerolee/comments/158660.html</wfw:comment><comments>http://m.shnenglu.com/zerolee/archive/2011/10/19/158660.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/zerolee/comments/commentRss/158660.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/zerolee/services/trackbacks/158660.html</trackback:ping><description><![CDATA[鏄劇ず涓緇勬暟鐨勫叏鎺掑垪鍜岀粍鍚堢▼搴忥細 <div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008080; "> 1</span> <span style="color: #0000FF; ">void</span><span style="color: #000000; "> print(</span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> std::vector</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">>&</span><span style="color: #000000; "> s)<br /> </span><span style="color: #008080; "> 2</span> <span style="color: #000000; ">{<br /> </span><span style="color: #008080; "> 3</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">static</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> n </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: #008080; "> 4</span> <span style="color: #000000; ">    printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d:</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, n</span><span style="color: #000000; ">++</span><span style="color: #000000; ">);<br /> </span><span style="color: #008080; "> 5</span> <span style="color: #000000; ">    printf(</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: #008080; "> 6</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> i </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">; i </span><span style="color: #000000; "><</span><span style="color: #000000; "> s.size(); i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br /> </span><span style="color: #008080; "> 7</span> <span style="color: #000000; ">        printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; "> %d </span><span style="color: #000000; ">"</span><span style="color: #000000; ">, s[i]);<br /> </span><span style="color: #008080; "> 8</span> <span style="color: #000000; ">    printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">]\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br /> </span><span style="color: #008080; "> 9</span> <span style="color: #000000; ">}<br /> </span><span style="color: #008080; ">10</span> <span style="color: #000000; "><br /> </span><span style="color: #008080; ">11</span> <span style="color: #000000; "></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> permutation(std::vector</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">>&</span><span style="color: #000000; "> v, </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> beg, </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> end)<br /> </span><span style="color: #008080; ">12</span> <span style="color: #000000; ">{<br /> </span><span style="color: #008080; ">13</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (beg </span><span style="color: #000000; ">></span><span style="color: #000000; "> end) {<br /> </span><span style="color: #008080; ">14</span> <span style="color: #000000; ">        print(v);<br /> </span><span style="color: #008080; ">15</span> <span style="color: #000000; ">        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">;<br /> </span><span style="color: #008080; ">16</span> <span style="color: #000000; ">    }<br /> </span><span style="color: #008080; ">17</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> i </span><span style="color: #000000; ">=</span><span style="color: #000000; "> beg; i </span><span style="color: #000000; "><=</span><span style="color: #000000; "> end; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">) {<br /> </span><span style="color: #008080; ">18</span> <span style="color: #000000; ">        std::swap(v[i], v[beg]);<br /> </span><span style="color: #008080; ">19</span> <span style="color: #000000; ">        permutation(v, beg</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">, end); </span><span style="color: #008000; ">//</span><span style="color: #008000; "> pleate note, here always beg+1, not i+1</span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">20</span> <span style="color: #008000; "></span><span style="color: #000000; ">        std::swap(v[i], v[beg]);<br /> </span><span style="color: #008080; ">21</span> <span style="color: #000000; ">    }<br /> </span><span style="color: #008080; ">22</span> <span style="color: #000000; ">}<br /> </span><span style="color: #008080; ">23</span> <span style="color: #000000; "><br /> </span><span style="color: #008080; ">24</span> <span style="color: #000000; "></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> pm(std::vector</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">>&</span><span style="color: #000000; "> v)<br /> </span><span style="color: #008080; ">25</span> <span style="color: #000000; ">{<br /> </span><span style="color: #008080; ">26</span> <span style="color: #000000; ">    std::copy(v.begin(), v.end(), std::ostream_iterator</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">></span><span style="color: #000000; ">(std::cout, </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: #008080; ">27</span> <span style="color: #000000; ">    printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">\nfull permulation are:\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br /> </span><span style="color: #008080; ">28</span> <span style="color: #000000; ">    permutation(v, </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, v.size()</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br /> </span><span style="color: #008080; ">29</span> <span style="color: #000000; ">}<br /> </span><span style="color: #008080; ">30</span> <span style="color: #000000; "><br /> </span><span style="color: #008080; ">31</span> <span style="color: #000000; "></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> print(</span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> std::vector</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">>&</span><span style="color: #000000; "> v, </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> beg, </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> end)<br /> </span><span style="color: #008080; ">32</span> <span style="color: #000000; ">{<br /> </span><span style="color: #008080; ">33</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">static</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> n </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: #008080; ">34</span> <span style="color: #000000; ">    printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d:</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, n</span><span style="color: #000000; ">++</span><span style="color: #000000; ">);<br /> </span><span style="color: #008080; ">35</span> <span style="color: #000000; ">    printf(</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: #008080; ">36</span> <span style="color: #000000; ">    std::copy(v.begin()</span><span style="color: #000000; ">+</span><span style="color: #000000; ">beg, v.begin()</span><span style="color: #000000; ">+</span><span style="color: #000000; ">end</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">, std::ostream_iterator</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">></span><span style="color: #000000; ">(std::cout, </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: #008080; ">37</span> <span style="color: #000000; ">    printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">]\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br /> </span><span style="color: #008080; ">38</span> <span style="color: #000000; ">}<br /> </span><span style="color: #008080; ">39</span> <span style="color: #000000; "><br /> </span><span style="color: #008080; ">40</span> <span style="color: #000000; "></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> fullcombination(std::vector</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">>&</span><span style="color: #000000; "> v)<br /> </span><span style="color: #008080; ">41</span> <span style="color: #000000; ">{<br /> </span><span style="color: #008080; ">42</span> <span style="color: #000000; ">    printf(</span><span style="color: #000000; ">"</span><div style="display: inline-block; "></div>full combination<span style="color: #000000; "> are:\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br /> </span><span style="color: #008080; ">43</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (unsigned </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> i </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">; i </span><span style="color: #000000; "><</span><span style="color: #000000; "> v.size(); i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">) {<br /> </span><span style="color: #008080; ">44</span> <span style="color: #000000; ">        print(v, i, i);<br /> </span><span style="color: #008080; ">45</span> <span style="color: #000000; ">        </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (unsigned </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> j </span><span style="color: #000000; ">=</span><span style="color: #000000; "> i</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">; j </span><span style="color: #000000; "><</span><span style="color: #000000; "> v.size(); j</span><span style="color: #000000; ">++</span><span style="color: #000000; ">) {<br /> </span><span style="color: #008080; ">46</span> <span style="color: #000000; ">            </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> k </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">; k </span><span style="color: #000000; "><</span><span style="color: #000000; "> v.size()</span><span style="color: #000000; ">-</span><span style="color: #000000; ">j; k</span><span style="color: #000000; ">++</span><span style="color: #000000; ">) {<br /> </span><span style="color: #008080; ">47</span> <span style="color: #000000; ">                std::swap(v[j</span><span style="color: #000000; ">+</span><span style="color: #000000; ">k], v[j]);<br /> </span><span style="color: #008080; ">48</span> <span style="color: #000000; ">                print(v, i, j);<br /> </span><span style="color: #008080; ">49</span> <span style="color: #000000; ">                std::swap(v[j</span><span style="color: #000000; ">+</span><span style="color: #000000; ">k], v[j]);<br /> </span><span style="color: #008080; ">50</span> <span style="color: #000000; ">            }<br /> </span><span style="color: #008080; ">51</span> <span style="color: #000000; ">        }<br /> </span><span style="color: #008080; ">52</span> <span style="color: #000000; ">    }<br /> </span><span style="color: #008080; ">53</span> <span style="color: #000000; ">}<br /> </span><span style="color: #008080; ">54</span> <span style="color: #000000; "></span></div><img src ="http://m.shnenglu.com/zerolee/aggbug/158660.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/zerolee/" target="_blank">Zero Lee</a> 2011-10-19 09:34 <a href="http://m.shnenglu.com/zerolee/archive/2011/10/19/158660.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Generating Permutationshttp://m.shnenglu.com/zerolee/archive/2011/09/21/156428.htmlZero LeeZero LeeWed, 21 Sep 2011 07:22:00 GMThttp://m.shnenglu.com/zerolee/archive/2011/09/21/156428.htmlhttp://m.shnenglu.com/zerolee/comments/156428.htmlhttp://m.shnenglu.com/zerolee/archive/2011/09/21/156428.html#Feedback0http://m.shnenglu.com/zerolee/comments/commentRss/156428.htmlhttp://m.shnenglu.com/zerolee/services/trackbacks/156428.htmlA permutation can be obtained by selecting an element in the given set and recursively permuting the remaining elements.

 { ai,P(a1,...,ai-1,ai+1,...,aN) if N > 1 P(a1,...,aN) = aN if N = 1


 --|--|--|-| |a|b-|c-d-| a|------------b------------c-------------d --|--|--|-| ---|-|--|--| ---|--|-|--| --|--|--|-| |-|b-|c-d-| |a-|-|c-|d-| |a-|b-|-|d-| |a|b-|c-|-|

At each stage of the permutation process, the given set of elements consists of two parts: a subset of values that already have been processed, and a subset that still needs to be processed. This logical seperation can be physically realized by exchanging, in the i’th step, the i’th value with the value being chosen at that stage. That approaches leaves the first subset in the first i locations of the outcome.

 --|--|--|-| |a|b-|c-d-| --|--|------------|--------------------------|--|-| a||b |c d | |b a |c |d | |c||b |a|d | |d|b |c |a| -----|--------------------------|---- ----------- --|--|--|-| ---|-|--|--| ---|--|-|--| b-|a-|c-d-| |b-|c|a-|d-| |b-|d-|c|a-| ---|--|------------|--|-| |b-|c-a-|d-| b-|c-|d-|a| | b-|c-|d-|a| |-|--|--|-|
permute(i) 
   if i == N  output A[N] 
   else 
      for j = i to N do 
         swap(A[i], A[j]) 
         permute(i+1) 
         swap(A[i], A[j]) 


Zero Lee 2011-09-21 15:22 鍙戣〃璇勮
]]>
Inside The C++ Object Model 闃呰絎旇http://m.shnenglu.com/zerolee/archive/2011/09/19/156211.htmlZero LeeZero LeeMon, 19 Sep 2011 05:18:00 GMThttp://m.shnenglu.com/zerolee/archive/2011/09/19/156211.htmlhttp://m.shnenglu.com/zerolee/comments/156211.htmlhttp://m.shnenglu.com/zerolee/archive/2011/09/19/156211.html#Feedback0http://m.shnenglu.com/zerolee/comments/commentRss/156211.htmlhttp://m.shnenglu.com/zerolee/services/trackbacks/156211.html鏈?縐嶆儏鍐典細瀵艱嚧“緙栬瘧鍣ㄥ繀欏諱負鏈0鏄巆onstructor涔媍lasses鍚堟垚涓涓猟efault constructor“銆侰++ 鏍囧噯鎶婇偅浜涘悎鎴愮墿縐頒負implicit nontrivial default constructors銆傝鍚堟垚鍑烘潵鐨刢onstructor鍙兘婊¤凍緙栬瘧鍣?鑰岄潪紼嬪簭)鐨勯渶瑕併傚畠涔嬫墍浠ヨ兘澶熷畬鎴愪換鍔★紝鏄熺潃“璋冪敤member object 鎴?base class 鐨刣efault constructor“ 鎴栨槸 ”涓烘瘡涓涓猳bject鍒濆鍖栧叾virtual function 鏈哄埗鎴杤irtual base class鏈哄埗“鑰屽畬鎴愩傝嚦浜庢病鏈夊瓨鍦ㄩ偅鍥涚鎯呭喌鑰屽張娌℃湁澹版槑浠諱綍constructor鐨刢lasses錛屾垜浠瀹冧滑鎷ユ湁鐨勬槸implicit trivial default constructors錛屽畠浠疄闄呬笂騫朵笉浼氳鍚堟垚鍑烘潵銆?br />鍦ㄥ悎鎴愬嚭鏉ョ殑default constructor涓紝鍙湁base class subobjects 鍜宮ember class objects浼氳鍒濆鍖栥傛墍鏈夊叾瀹冪殑nonstatic data memeber錛屽鏁存暟銆佹暣鏁版寚閽堛佹暣鏁版暟緇勭瓑絳夐兘涓嶄細琚垵濮嬪寲銆傝繖浜涘垵濮嬪寲鎿嶄綔瀵圭▼搴忚岃█鎴栬鏈夐渶瑕侊紝浣嗗緙栬瘧鍣ㄥ垯騫墮潪蹇呰銆?br />






Zero Lee 2011-09-19 13:18 鍙戣〃璇勮
]]>
Inside The C++ Object Model 闃呰絎旇http://m.shnenglu.com/zerolee/archive/2011/09/19/156212.htmlZero LeeZero LeeMon, 19 Sep 2011 05:18:00 GMThttp://m.shnenglu.com/zerolee/archive/2011/09/19/156212.htmlhttp://m.shnenglu.com/zerolee/comments/156212.htmlhttp://m.shnenglu.com/zerolee/archive/2011/09/19/156212.html#Feedback0http://m.shnenglu.com/zerolee/comments/commentRss/156212.htmlhttp://m.shnenglu.com/zerolee/services/trackbacks/156212.html鏈?縐嶆儏鍐典細瀵艱嚧“緙栬瘧鍣ㄥ繀欏諱負鏈0鏄巆onstructor涔媍lasses鍚堟垚涓涓猟efault constructor“銆侰++ 鏍囧噯鎶婇偅浜涘悎鎴愮墿縐頒負implicit nontrivial default constructors銆傝鍚堟垚鍑烘潵鐨刢onstructor鍙兘婊¤凍緙栬瘧鍣?鑰岄潪紼嬪簭)鐨勯渶瑕併傚畠涔嬫墍浠ヨ兘澶熷畬鎴愪換鍔★紝鏄熺潃“璋冪敤member object 鎴?base class 鐨刣efault constructor“ 鎴栨槸 ”涓烘瘡涓涓猳bject鍒濆鍖栧叾virtual function 鏈哄埗鎴杤irtual base class鏈哄埗“鑰屽畬鎴愩傝嚦浜庢病鏈夊瓨鍦ㄩ偅鍥涚鎯呭喌鑰屽張娌℃湁澹版槑浠諱綍constructor鐨刢lasses錛屾垜浠瀹冧滑鎷ユ湁鐨勬槸implicit trivial default constructors錛屽畠浠疄闄呬笂騫朵笉浼氳鍚堟垚鍑烘潵銆?br />鍦ㄥ悎鎴愬嚭鏉ョ殑default constructor涓紝鍙湁base class subobjects 鍜宮ember class objects浼氳鍒濆鍖栥傛墍鏈夊叾瀹冪殑nonstatic data memeber錛屽鏁存暟銆佹暣鏁版寚閽堛佹暣鏁版暟緇勭瓑絳夐兘涓嶄細琚垵濮嬪寲銆傝繖浜涘垵濮嬪寲鎿嶄綔瀵圭▼搴忚岃█鎴栬鏈夐渶瑕侊紝浣嗗緙栬瘧鍣ㄥ垯騫墮潪蹇呰銆?br />2. The semantics of copy constructor
鏈?縐嶆儏鍐碉紝涓涓猚lass涓嶅睍鐜板嚭"bitwise copy semantics"錛?br />1) 褰揷lass鍐呭惈涓涓猰ember object鑰屽悗鑰呯殑class澹版槑鏈変竴涓猚opy constructor鏃?涓嶈鏄class 璁捐鑰呮槑紜殑澹版槑錛岃繕鏄緙栬瘧鍣ㄥ悎鎴?;
2) 褰揷lass緇ф壙鑷竴涓猙ase class鑰屽悗鑰呭瓨鍦ㄤ竴涓猚opy constructor鏃?鍐嶆寮鴻皟錛屼笉璁烘槸琚槑紜0鏄庤繕鏄鍚堟垚鑰屽緱);
3) 褰揷lass澹版槑浜嗕竴涓垨澶氫釜virtual functions鏃訛紱
4) 褰揷lass媧劇敓鑷竴涓戶鎵夸覆閾撅紝鍏朵腑鏈変竴涓垨澶氫釜virtual base classes鏃躲?br />鍓?縐嶆儏鍐典腑錛岀紪璇戝櫒蹇呴』灝唌ember鎴朾ase class鐨?copy constructors 璋冪敤鎿嶄綔"瀹夋彃鍒拌鍚堟垚鐨刢opy constructor涓?br />




Zero Lee 2011-09-19 13:18 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美国产日韩精品免费观看| 国产午夜精品全部视频在线播放 | 亚洲手机在线| 亚洲美女黄网| 夜色激情一区二区| 亚洲图片你懂的| 午夜精品福利在线观看| 久久米奇亚洲| 欧美国产第一页| 欧美色大人视频| 国产日韩在线不卡| 亚洲精品日韩在线| 亚洲欧美日韩中文播放| 久久久久久亚洲精品杨幂换脸| 免费观看一区| 一区二区三区 在线观看视| 亚洲综合欧美| 欧美a级理论片| 蜜臀久久99精品久久久画质超高清| 国产伦精品一区二区三| 久久手机免费观看| 欧美一区二区在线播放| 国产丝袜一区二区| 久久久精品动漫| 欧美xxx成人| 国产精品激情偷乱一区二区∴| 国产欧美日韩激情| 99精品国产热久久91蜜凸| 久久国产视频网站| 亚洲人成77777在线观看网| 亚洲国产精品va| 久久国内精品自在自线400部| 欧美日韩一区二区三区在线 | 亚洲欧美清纯在线制服| 久久一区二区三区四区五区| 日韩视频在线永久播放| 久久男人av资源网站| 国产精品视频在线观看| 99视频精品免费观看| 老司机一区二区三区| 亚洲午夜激情在线| 欧美韩日亚洲| 亚洲国产色一区| 久久蜜桃资源一区二区老牛| 午夜亚洲伦理| 国产精品一卡二| 亚洲欧美国产va在线影院| 亚洲精品美女在线| 免费久久99精品国产| 在线播放日韩| 葵司免费一区二区三区四区五区| 亚洲欧美国产三级| 国产精品日韩电影| 性色av一区二区三区在线观看 | 毛片基地黄久久久久久天堂| 亚洲欧美久久久| 国产精品日韩二区| 先锋影音网一区二区| 国产一区清纯| 久久成人av少妇免费| 亚洲在线观看| 国产精品爽黄69| 亚洲欧美日韩网| 欧美一区高清| 永久91嫩草亚洲精品人人| 久久综合激情| 久久午夜色播影院免费高清| 在线观看国产成人av片| 欧美寡妇偷汉性猛交| 欧美福利电影网| 一区二区三区三区在线| 一本色道88久久加勒比精品 | 极品中文字幕一区| 欧美在线黄色| 欧美制服丝袜| 亚洲激情在线视频| 日韩午夜在线视频| 国产精品日韩电影| 久久影院午夜论| 欧美77777| 亚洲一区二区三区视频播放| 亚洲一区二区av电影| 精品不卡在线| 亚洲精品免费网站| 国产日韩欧美三级| 免费亚洲婷婷| 欧美色区777第一页| 久久精品国产精品亚洲精品| 美女成人午夜| 午夜欧美精品| 看片网站欧美日韩| 亚洲欧美日韩久久精品| 久久免费高清| 亚洲一区在线观看视频| 久久久精品国产一区二区三区| 亚洲精品看片| 性色一区二区三区| 99精品国产99久久久久久福利| 先锋影音久久| 亚洲视频免费| 免费观看成人www动漫视频| 99精品久久免费看蜜臀剧情介绍| 亚洲欧美在线一区二区| 亚洲国产日韩一区二区| 亚洲欧美在线观看| 一二三四社区欧美黄| 久久激五月天综合精品| 亚洲一区在线视频| 欧美激情视频一区二区三区在线播放 | 欧美一区二区三区免费大片| 快射av在线播放一区| 欧美一级淫片播放口| 欧美高清免费| 久久夜色精品国产欧美乱极品 | 久久婷婷麻豆| 欧美综合第一页| 欧美日韩精品一本二本三本| 免费观看成人网| 黄色一区二区三区| 欧美伊人久久久久久久久影院| 亚洲永久免费av| 欧美日韩精品系列| 一本色道久久88综合日韩精品| 亚洲黄色尤物视频| 久久婷婷久久| 麻豆九一精品爱看视频在线观看免费| 国产精品午夜视频| 亚洲天堂av在线免费观看| 亚洲国产成人精品视频| 国产欧美日韩综合一区在线播放| 亚洲精品国产视频| 久久久夜夜夜| 蜜桃久久av| 国内免费精品永久在线视频| 亚洲一区国产| 欧美一区不卡| 国产日韩欧美三级| 久久精品国产成人| 欧美ab在线视频| 亚洲精品欧美激情| 欧美精品二区| 夜夜精品视频一区二区| 亚洲天堂男人| 国产精品视频免费观看| 亚洲一区二区三区激情| 久久成人国产精品| 影音欧美亚洲| 欧美成年人视频| 日韩视频在线一区二区| 亚洲女女做受ⅹxx高潮| 国产精品久久久久久久久久免费看| 亚洲免费黄色| 欧美一区二区视频网站| 国模精品一区二区三区| 久久这里有精品15一区二区三区| 美女国产精品| 一本色道久久综合亚洲精品婷婷| 欧美日韩一级片在线观看| 亚洲欧美成人网| 免费观看成人网| 亚洲精品一区二| 蜜桃精品一区二区三区| 亚洲精品视频免费观看| 欧美日韩一区免费| 欧美一区二区三区免费看 | 国产精品久久久久77777| 亚洲欧美在线看| 亚洲高清三级视频| 亚洲欧美日韩综合国产aⅴ| 激情久久婷婷| 欧美视频一区二区| 久久成人羞羞网站| 亚洲精品小视频| 久久亚洲精品视频| 亚洲一区二区在线观看视频| 国产一区二区看久久| 欧美国产日韩一区| 欧美一级理论性理论a| 亚洲欧洲在线一区| 久久久www| 在线亚洲成人| 亚洲电影免费观看高清完整版在线观看 | 亚洲第一在线| 久久av最新网址| 99精品欧美| 亚洲国产另类久久精品| 国产欧美日韩激情| 欧美色欧美亚洲另类二区| 另类尿喷潮videofree| 亚洲天堂第二页| 最近看过的日韩成人| 理论片一区二区在线| 亚洲欧美日韩一区二区在线 | 国产精品久久久久久影视| 亚洲欧美视频在线观看| 国产欧美一区二区精品性色| 欧美理论在线播放| 你懂的视频欧美| 久久精品国产精品亚洲综合| 亚洲一区二区三区免费在线观看 |