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

            搜索

            •  

            積分與排名

            • 積分 - 1804159
            • 排名 - 5

            最新評論

            閱讀排行榜

            97久久精品人妻人人搡人人玩| 中文精品99久久国产 | 亚洲精品高清久久| 大香网伊人久久综合网2020| 久久精品无码免费不卡| 久久精品综合网| 久久国产成人精品麻豆| 日韩美女18网站久久精品| 奇米综合四色77777久久| 精品久久久久久无码人妻热| 日韩乱码人妻无码中文字幕久久 | 亚洲国产成人久久综合碰| 国产综合久久久久久鬼色| 一本色道久久综合| 国产精品成人精品久久久 | 亚洲欧洲精品成人久久奇米网| 国产∨亚洲V天堂无码久久久| 亚洲国产婷婷香蕉久久久久久| 久久精品人人做人人爽97| 香蕉99久久国产综合精品宅男自| 精品久久久久久国产| 久久天天躁狠狠躁夜夜不卡| 亚洲国产精品久久久久网站| 久久国产欧美日韩精品| 久久人妻无码中文字幕| 欧美久久久久久午夜精品| 青青青国产成人久久111网站| 亚洲综合熟女久久久30p| 亚洲七七久久精品中文国产| 久久无码国产| 热久久国产欧美一区二区精品| 国产精品免费看久久久香蕉| 久久久久久狠狠丁香| 国产精品美女久久久久网| 国产成人精品白浆久久69| 一本色道久久88—综合亚洲精品| 久久久久人妻一区二区三区| 一本久道久久综合狠狠爱| 中文字幕乱码人妻无码久久| 伊人色综合久久天天人手人婷 | 国产高清国内精品福利99久久|