• <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>

            C++ Programmer's Cookbook

            {C++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

            alloc和一些數許函數

            這是干嗎用的那?指點指點啊?越詳細越好啊啊!!謝謝!!!!!!

            -------------------
            h:

            #include <limits>
            #include <iostream>

            namespace MyLib {
               template <class T>
               class MyAlloc {
                 public:
                   // type definitions
                   typedef T        value_type;
                   typedef T*       pointer;
                   typedef const T* const_pointer;
                   typedef T&       reference;
                   typedef const T& const_reference;
                   typedef std::size_t    size_type;
                   typedef std::ptrdiff_t difference_type;

                   // rebind allocator to type U
                   template <class U>
                   struct rebind {
                       typedef MyAlloc<U> other;
                   };

                   // return address of values
                   pointer address (reference value) const {
                       return &value;
                   }
                   const_pointer address (const_reference value) const {
                       return &value;
                   }

                   /* constructors and destructor
                    * - nothing to do because the allocator has no state
                    */
                   MyAlloc() throw() {
                   }
                   MyAlloc(const MyAlloc&) throw() {
                   }
                   template <class U>
                     MyAlloc (const MyAlloc<U>&) throw() {
                   }
                   ~MyAlloc() throw() {
                   }

                   // return maximum number of elements that can be allocated
                   size_type max_size () const throw() {
                       return std::numeric_limits<std::size_t>::max() / sizeof(T);
                   }

                   // allocate but don't initialize num elements of type T
                   pointer allocate (size_type num, const void* = 0) {
                       // print message and allocate memory with global new
                       std::cerr << "allocate " << num << " element(s)"
                                 << " of size " << sizeof(T) << std::endl;
                       pointer ret = (pointer)(::operator new(num*sizeof(T)));
                       std::cerr << " allocated at: " << (void*)ret << std::endl;
                       return ret;
                   }

                   // initialize elements of allocated storage p with value value
                   void construct (pointer p, const T& value) {
                       // initialize memory with placement new
                       new((void*)p)T(value);
                   }

                   // destroy elements of initialized storage p
                   void destroy (pointer p) {
                       // destroy objects by calling their destructor
                       p->~T();
                   }

                   // deallocate storage p of deleted elements
                   void deallocate (pointer p, size_type num) {
                       // print message and deallocate memory with global delete
                       std::cerr << "deallocate " << num << " element(s)"
                                 << " of size " << sizeof(T)
                                 << " at: " << (void*)p << std::endl;
                       ::operator delete((void*)p);
                   }
               };

               // return that all specializations of this allocator are interchangeable
               template <class T1, class T2>
               bool operator== (const MyAlloc<T1>&,
                                const MyAlloc<T2>&) throw() {
                   return true;
               }
               template <class T1, class T2>
               bool operator!= (const MyAlloc<T1>&,
                                const MyAlloc<T2>&) throw() {
                   return false;
               }
            }

            cpp:
            #include <vector>
            #include "myalloc.hpp"

            int main()
            {
                // create a vector, using MyAlloc<> as allocator
                std::vector<int,MyLib::MyAlloc<int> > v;

                // insert elements
                // - causes reallocations
                v.push_back(42);
                v.push_back(56);
                v.push_back(11);
                v.push_back(22);
                v.push_back(33);
                v.push_back(44);
            }

            ----------------------
            不常見的數學咚咚:
            #include <iostream>
            #include <complex>
            using namespace std;

            int main()
            {
                /* complex number with real and imaginary parts
                 * - real part: 4.0
                 * - imaginary part: 3.0
                 */
                complex<double> c1(4.0,3.0);

                /* create complex number from polar coordinates
                 * - magnitude: 5.0
                 * - phase angle: 0.75
                 */
                complex<float> c2(polar(5.0,0.75));

                // print complex numbers with real and imaginary parts
                cout << "c1: " << c1 << endl;
                cout << "c2: " << c2 << endl;

                // print complex numbers as polar coordinates
                cout << "c1: magnitude: " << abs(c1)
                     << " (squared magnitude: " << norm(c1) << ") "
                     <<    " phase angle: " << arg(c1) << endl;
                cout << "c2: magnitude: " << abs(c2)
                     << " (squared magnitude: " << norm(c2) << ") "
                     <<    " phase angle: " << arg(c2) << endl;

                // print complex conjugates
                cout << "c1 conjugated:  " << conj(c1) << endl;
                cout << "c2 conjugated:  " << conj(c2) << endl;

                // print result of a computation
                cout << "4.4 + c1 * 1.8: " << 4.4 + c1 * 1.8 << endl;

                /* print sum of c1 and c2:
                 * - note: different types
                 */
                cout << "c1 + c2:        "
                     << c1 + complex<double>(c2.real(),c2.imag()) << endl;

                // add square root of c1 to c1 and print the result
                cout << "c1 += sqrt(c1): " << (c1 += sqrt(c1)) << endl;
            }

            posted on 2005-12-16 14:36 夢在天涯 閱讀(1154) 評論(1)  編輯 收藏 引用 所屬分類: STL/Boost

            評論

            # re: alloc和一些數許函數 2010-12-12 17:10 lincheung

            #include <complex>是指得復數,類似於a+bi,其中a是實數部分,b是虛數部分.  回復  更多評論   

            公告

            EMail:itech001#126.com

            導航

            統計

            • 隨筆 - 461
            • 文章 - 4
            • 評論 - 746
            • 引用 - 0

            常用鏈接

            隨筆分類

            隨筆檔案

            收藏夾

            Blogs

            c#(csharp)

            C++(cpp)

            Enlish

            Forums(bbs)

            My self

            Often go

            Useful Webs

            Xml/Uml/html

            搜索

            •  

            積分與排名

            • 積分 - 1807518
            • 排名 - 5

            最新評論

            閱讀排行榜

            国产高潮国产高潮久久久| 久久这里只有精品首页| 久久精品嫩草影院| 精品久久久久久无码专区不卡| 亚洲精品美女久久777777| 99国产精品久久久久久久成人热| 国产精品18久久久久久vr| 99久久国产综合精品成人影院| 久久精品国产一区二区三区 | 久久久精品久久久久久| 午夜福利91久久福利| 久久久久AV综合网成人| 国产精品熟女福利久久AV| 亚洲一区精品伊人久久伊人 | 国产精品久久久久影视不卡| 久久久久无码中| 久久婷婷五月综合97色一本一本| 岛国搬运www久久| 亚洲熟妇无码另类久久久| 久久人人爽人爽人人爽av| 欧美熟妇另类久久久久久不卡| 97精品国产97久久久久久免费| 精品国产乱码久久久久久呢| 久久久黄片| 国产—久久香蕉国产线看观看| 久久久久亚洲AV成人片| 亚洲精品无码久久毛片| 久久99国产精品成人欧美| 91精品国产91久久综合| 亚洲AV日韩AV天堂久久| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 午夜视频久久久久一区 | 久久精品亚洲日本波多野结衣| 亚洲精品tv久久久久久久久久| 久久综合综合久久97色| 潮喷大喷水系列无码久久精品| 久久人妻少妇嫩草AV蜜桃| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 四虎国产精品成人免费久久| 精品久久久久久无码中文字幕| 91精品国产综合久久精品|