• <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 夢在天涯 閱讀(1146) 評論(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

            搜索

            •  

            積分與排名

            • 積分 - 1804430
            • 排名 - 5

            最新評論

            閱讀排行榜

            久久精品成人免费网站| 一本色道久久88—综合亚洲精品| 久久国产精品一国产精品金尊 | 久久精品国产久精国产| 国产精品99久久久久久宅男| 精品久久久无码中文字幕| 尹人香蕉久久99天天拍| 麻豆一区二区99久久久久| 久久国产精品国语对白| 亚洲国产精品无码久久SM| 青青草原1769久久免费播放| 国产精品99久久久久久宅男小说| 久久人爽人人爽人人片AV| 久久人人爽人爽人人爽av| WWW婷婷AV久久久影片| 2021最新久久久视精品爱| 国产精品久久久天天影视香蕉| 久久天天婷婷五月俺也去| 嫩草影院久久国产精品| 亚洲精品无码久久千人斩| 亚洲国产小视频精品久久久三级 | 久久中文娱乐网| 久久AV高潮AV无码AV| 一本大道久久东京热无码AV| 一本一道久久精品综合| 亚洲AV日韩精品久久久久久| 怡红院日本一道日本久久| 少妇久久久久久被弄高潮| 亚洲人成无码网站久久99热国产| 国产精品九九久久免费视频 | 亚洲Av无码国产情品久久| 久久99精品国产99久久6| 婷婷综合久久狠狠色99h| 欧美熟妇另类久久久久久不卡| 久久人人爽人人人人片av| 久久亚洲国产最新网站| 久久精品国产99国产精品| 久久伊人五月天论坛| 久久综合一区二区无码| 色婷婷综合久久久久中文字幕| 久久久艹|