• <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>
            Lyt
            posts - 16,comments - 61,trackbacks - 0

            今天看msdn不小心瞄到C#的動(dòng)態(tài)多維數(shù)組,忍不住流口水,如果自己也有一個(gè)該有多好,于是就開(kāi)始動(dòng)手湊。

            剛開(kāi)始被如何定義動(dòng)態(tài)多維數(shù)組給卡住,我希望用起來(lái)像這樣:

            Array<int> LytArray(321);   //以下代碼相當(dāng)于定義了int[3][2][1];

            可是構(gòu)造函數(shù)的參數(shù)個(gè)數(shù)在使用前無(wú)法確定,難道要寫(xiě)很多個(gè)構(gòu)造函數(shù),于是想了個(gè)辦法,把構(gòu)造函數(shù)的參數(shù)單獨(dú)拿出來(lái)做手腳,并為此暗暗興奮=  =

                class ArrayDimension
                {
                
            public:
                    
            int Data[MAX_ARRAY];
                    
            int Dimension;

                    ArrayDimension(
            const int index);
                    ArrayDimension
            & operator,(const int index);
                };


                template
            <typename _Type>
                
            class Array
                {
                
            private:
                    AutoPtr
            <_Type> Data;
                    ArrayDimension DimensionInfo;

                
            public:
                    Array(
            const ArrayDimension Info);
                };

            我以為在編譯Array<int> LytArray(3, 2, 1)時(shí),3會(huì)用ArrayDimension來(lái)解釋,然后通過(guò)重載逗號(hào)來(lái)解決不知道有多少個(gè)參數(shù)的問(wèn)題,事實(shí)上失敗了T_T:

            error C2661: 'Lyt::Array<_Type>::Array' : no overloaded function takes 3 arguments 

            具體為什么不給編譯,其實(shí)我不怎么明白,僅以此文記錄一時(shí)的胡思亂想,歡迎各位來(lái)噴~
            posted on 2009-10-11 21:35 Lyt 閱讀(1844) 評(píng)論(14)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)結(jié)構(gòu)

            FeedBack:
            # re: 很傻很天真之Array
            2009-10-12 00:48 | 空明流轉(zhuǎn)
            沒(méi)什么噴的。。。編譯器直接把你咔嚓了。。。
            你要是Array(ArrayDimension(3),2,1)
            說(shuō)不定就成了。  回復(fù)  更多評(píng)論
              
            # re: 很傻很天真之Array
            2009-10-12 09:19 | Kevin Lynx
            - -|
            重載逗號(hào)運(yùn)算符,不會(huì)改變函數(shù)中逗號(hào)的語(yǔ)義。 - -!
            是用于改變逗號(hào)表達(dá)式中逗號(hào)的語(yǔ)義,如:
            ArrayDimension a;
            a, 1; //逗號(hào)表達(dá)式
            標(biāo)準(zhǔn)的逗號(hào)表達(dá)式其實(shí)還應(yīng)該有個(gè)返回值。如:
            class Test
            {
            public:
            Test( int i ) : index( i )
            {
            }

            const Test &operator, ( const Test &other )
            {
            return *this;
            }

            private:
            int index;
            };

            Test a( 1 ), b( 2 ), c( 3 );
            c = a, b;

            不懂C#里的動(dòng)態(tài)多維數(shù)組,所以對(duì)你這里的需求不作評(píng)論。:)
            如果要支持不定個(gè)數(shù)的參數(shù),要么使用C里的...(如printf),要么重載很多版本,即使模板也無(wú)法解決這個(gè)問(wèn)題。如果太懶不想寫(xiě)那么多重載版本,可以考慮用宏自動(dòng)生成這些代碼。  回復(fù)  更多評(píng)論
              
            # re: 很傻很天真之Array
            2009-10-12 09:41 | 暗涌
            重載逗號(hào)。。。。More Effective C++上說(shuō),重載這些不推薦重載的操作符,很難得到預(yù)期的行為。。。  回復(fù)  更多評(píng)論
              
            # re: 很傻很天真之Array[未登錄](méi)
            2009-10-12 10:44 | goteet
            可變參數(shù)
            <stdarg.h>  回復(fù)  更多評(píng)論
              
            # re: 很傻很天真之Array
            2009-10-12 11:07 | 陳梓瀚(vczh)
            你應(yīng)該這樣:
            /*NewArray是一個(gè)全局變量*/
            Array<int, 3> arrays=NewArray[3][4][5];  回復(fù)  更多評(píng)論
              
            # re: 很傻很天真之Array
            2009-10-12 11:35 | 溪流
            這樣能過(guò):

            class ArrayDimension
            {
            public:
            int Data[MAX_ARRAY];
            int Dimension;

            ArrayDimension();
            ArrayDimension(const int index);
            ArrayDimension(const ArrayDimension &that);
            ArrayDimension& operator,(const int index);
            };


            template<typename _Type>
            class Array
            {
            private:
            ArrayDimension DimensionInfo;

            public:
            Array(const ArrayDimension Info);
            };

            Array<int> arr((3, 2, 1));  回復(fù)  更多評(píng)論
              
            # re: 很傻很天真之Array
            2009-10-12 12:38 | 陳梓瀚(vczh)
            @溪流
            把dimension放到template里面可以有以下效果:
            Array<int, 3>::operator[]返回Array<int, 2>
            Array<int, 2>::operator[]返回Array<int, 1>
            Array<int, 1>::operator[]返回int

            放到構(gòu)造函數(shù)里面想達(dá)到這個(gè)效果是很麻煩的,而且把一個(gè)3維的數(shù)組賦值給2維是一件不能接受的事情。  回復(fù)  更多評(píng)論
              
            # re: 很傻很天真之Array
            2009-10-12 13:02 | 溪流
            @陳梓瀚(vczh)

            嗯!這個(gè)方法不錯(cuò)!  回復(fù)  更多評(píng)論
              
            # re: 很傻很天真之Array
            2009-10-12 17:34 | 欲三更
            @陳梓瀚(vczh)
            模板參數(shù)只能是常量的前提下, 這樣搞和 intArray[3][4][5];有啥區(qū)別?  回復(fù)  更多評(píng)論
              
            # re: 很傻很天真之Array
            2009-10-12 18:21 | 陳梓瀚(vczh)
            @欲三更
            不用常數(shù),你想operator[]的返回類型是什么啊?  回復(fù)  更多評(píng)論
              
            # re: 很傻很天真之Array
            2009-10-12 18:22 | 陳梓瀚(vczh)
            @欲三更
            我這里的常數(shù)指的是維度,當(dāng)然跟尺寸是沒(méi)關(guān)系的  回復(fù)  更多評(píng)論
              
            # re: 很傻很天真之Array
            2009-10-12 20:09 | Lyt
            @空明流轉(zhuǎn)
            這樣寫(xiě)不順眼唉,而且是行不通的,我昨晚試過(guò)…  回復(fù)  更多評(píng)論
              
            # re: 很傻很天真之Array
            2009-10-12 20:11 | Lyt
            @暗涌
            我知道最好別重載逗號(hào),可是我也沒(méi)希望他到底先算哪個(gè)表達(dá)式,這樣還有差么?  回復(fù)  更多評(píng)論
              
            # re: 很傻很天真之Array
            2009-10-12 21:46 | 欲三更
            @陳梓瀚(vczh)
            哦, 你說(shuō)的是對(duì)的, 中看走眼了, 看見(jiàn)123就下意識(shí)的一位是尺度.  回復(fù)  更多評(píng)論
              
            97久久精品人人澡人人爽| 久久久高清免费视频| 国产精品久久久久乳精品爆 | 久久青青草原国产精品免费| 国产韩国精品一区二区三区久久| 久久亚洲国产欧洲精品一| 久久有码中文字幕| 97久久超碰国产精品旧版| 欧美日韩精品久久久久 | 99精品久久久久久久婷婷| 青青草原综合久久大伊人导航| 亚洲中文久久精品无码| 国产精品成人99久久久久91gav | 女人香蕉久久**毛片精品| 一级A毛片免费观看久久精品| 久久亚洲国产中v天仙www| 欧美喷潮久久久XXXXx| 日本亚洲色大成网站WWW久久 | 亚洲国产日韩欧美久久| 久久青草国产精品一区| 久久人人爽人人爽人人AV| 亚洲国产天堂久久综合| 四虎国产永久免费久久| 久久精品中文字幕无码绿巨人| 亚洲精品成人网久久久久久| 国产免费久久精品丫丫| 久久综合给合久久狠狠狠97色| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 久久综合88熟人妻| 亚洲精品高清国产一线久久| 亚洲va久久久久| 亚洲国产成人久久笫一页| 久久久99精品成人片中文字幕 | 88久久精品无码一区二区毛片 | 国产精品一区二区久久精品涩爱 | 亚洲va久久久噜噜噜久久天堂| 中文字幕久久精品| 久久天天躁夜夜躁狠狠躁2022| 区亚洲欧美一级久久精品亚洲精品成人网久久久久| 亚洲国产精品久久久久久| 99久久99这里只有免费费精品|