青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Jiang's C++ Space

創(chuàng)作,也是一種學(xué)習(xí)的過程。

   :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
數(shù)組是最最常用的數(shù)據(jù)結(jié)構(gòu)之一,我們現(xiàn)在往數(shù)組中加入元素,當(dāng)數(shù)組被加滿時(shí),我們希望最早加入數(shù)組的元素就被沖掉,像一個(gè)隊(duì)列那樣,那應(yīng)該如何實(shí)現(xiàn)呢?我寫了個(gè)類模板,非常簡單,初步測試下來還沒發(fā)現(xiàn)什么問題。
#pragma once

#define DEFAULT_ARRAY_SIZE 20
#define MINIMUM_ARRAY_SIZE 5

template 
<class T>
class CRollArray
{
public:
    CRollArray(
int iArraySize = DEFAULT_ARRAY_SIZE);
    
~CRollArray();
    T
& operator[] (int iIndex);
    
void Add(T element);
    
int GetSize();
    
void Reset();
private:
    T
* m_pData;
    
int m_iBegin;
    
int m_iEnd;
    
int m_iArrSize;
};

template 
<class T>
CRollArray
<T>::CRollArray(int iArraySize)
{
    
if (iArraySize<MINIMUM_ARRAY_SIZE)
        iArraySize
=MINIMUM_ARRAY_SIZE;

    m_pData 
= new T[iArraySize];
    m_iBegin 
= -1;
    m_iEnd 
= -1;
    m_iArrSize 
= iArraySize;
}

template 
<class T>
CRollArray
<T>::~CRollArray(void)
{
    
if(m_pData!=NULL)
        delete[] m_pData;
}

template 
<class T>
T
& CRollArray<T>::operator[] (int iIndex)
{
    
if (m_iBegin+iIndex<m_iArrSize)
        
return m_pData[m_iBegin+iIndex];
    
else
        
return m_pData[m_iBegin+iIndex-m_iArrSize];
}

template 
<class T>
void CRollArray<T>::Add(T element)
{
    
if(m_iEnd==m_iBegin-1)
    {
        
// xxxxEB
        if(m_iBegin==m_iArrSize-1)
        {
            m_iEnd 
= m_iBegin;
            m_iBegin 
= 0;
        }
        
// xxxEBx
        else
        {
            
++m_iEnd;
            
++m_iBegin;
        }
    }
    
else
    {
        
// Null array.
        if(m_iBegin==-1 && m_iEnd==-1)
        {
            m_iBegin 
= 0;
            m_iEnd 
= 0;
        }
        
else
        {
            
// BxxxxE
            if(m_iBegin==0 && m_iEnd==m_iArrSize-1)
            {
                
++m_iBegin;
                m_iEnd 
= 0;
            }
            
// BxxExx
            else
            {
                
++m_iEnd;
            }
        }
    }

    m_pData[m_iEnd] 
= element;
}

template 
<class T>
int CRollArray<T>::GetSize()
{
    
if (m_iEnd==m_iBegin-1 || (m_iBegin==0 && m_iEnd==m_iArrSize-1))
        
return m_iArrSize;

    
if(m_iBegin==-1 && m_iEnd==-1)
        
return 0;

    
return m_iEnd-m_iBegin+1;
}

template 
<class T>
void CRollArray<T>::Reset()
{
    m_iBegin 
= -1;
    m_iEnd 
= -1;
}
這是測試代碼:
#include "RollArray.h"

int _tmain(int argc, _TCHAR* argv[])
{
    CRollArray
<int> arrTest(10);
    printf(
"size: %d\n", arrTest.GetSize());
    arrTest.Add(
1);
    printf(
"size: %d\n", arrTest.GetSize());
    printf(
"idx0: %d\n", arrTest[0]);
    arrTest.Reset();
    printf(
"size: %d\n", arrTest.GetSize());
    arrTest.Add(
81);
    arrTest.Add(
4);
    arrTest.Add(
52);
    arrTest.Add(
123);
    arrTest.Add(
78);
    arrTest.Add(
987);
    arrTest.Add(
111);
    printf(
"size: %d\n", arrTest.GetSize());
    
int i;
    
for(i=0; i<arrTest.GetSize(); i++)
        printf(
"%d ", arrTest[i]);
    printf(
"\n");

    arrTest.Add(
321);
    arrTest.Add(
3);
    arrTest.Add(
2);
    arrTest.Add(
7);
    arrTest.Add(
54);
    arrTest.Add(
276);

    printf(
"size: %d\n", arrTest.GetSize());
    
for(i=0; i<arrTest.GetSize(); i++)
        printf(
"%d ", arrTest[i]);
    printf(
"\n");

    arrTest.Add(
94);
    arrTest.Add(
53);
    arrTest.Add(
40);
    arrTest.Add(
70);
    arrTest.Add(
102);
    arrTest.Add(
138);
    arrTest.Add(
461);
    arrTest.Add(
110);

    printf(
"size: %d\n", arrTest.GetSize());
    
for(i=0; i<arrTest.GetSize(); i++)
        printf(
"%d ", arrTest[i]);
    printf(
"\n");

    
return 0;
}
代碼執(zhí)行結(jié)果如下:
size: 0
size: 1
idx0: 1
size: 0
size: 7
81 4 52 123 78 987 111
size: 10
123 78 987 111 321 3 2 7 54 276
size: 10
54 276 94 53 40 70 102 138 461 110
posted on 2010-06-18 13:10 Jiang Guogang 閱讀(438) 評(píng)論(1)  編輯 收藏 引用 所屬分類: Knowledge

評(píng)論

# re: 一個(gè)"滾動(dòng)數(shù)組"類模板 2010-06-18 13:46 Matthew
哈哈,
重寫運(yùn)算符,
我都沒有想到
我看到需求,第一個(gè)反應(yīng)就是建立映射關(guān)系,
把相對(duì)應(yīng)的index映射,浪費(fèi)了內(nèi)存,而且很不好用
  回復(fù)  更多評(píng)論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            艳妇臀荡乳欲伦亚洲一区| 亚洲国产精品va在线看黑人| 久久亚洲私人国产精品va| 欧美日韩亚洲国产精品| 欧美国内亚洲| 亚洲电影有码| 欧美在线一二三四区| 欧美亚洲在线视频| 国产精品高潮在线| 妖精成人www高清在线观看| 亚洲欧美日韩国产| 国产精品高潮呻吟久久av无限| 亚洲自拍偷拍一区| 午夜精品久久久久99热蜜桃导演| 欧美日韩国产综合视频在线观看中文| 欧美成人免费网站| 伊人色综合久久天天| 久久国产欧美日韩精品| 久久久一区二区| 国产在线一区二区三区四区| 亚洲欧美在线网| 久久精品女人的天堂av| 好看的亚洲午夜视频在线| 性色一区二区| 久久美女性网| av72成人在线| 欧美视频在线观看| 亚洲影院在线| 久久尤物视频| 亚洲少妇一区| 国产精品丝袜久久久久久app| 亚洲专区免费| 亚洲清纯自拍| 欧美日韩国产精品一区二区亚洲| 亚洲字幕一区二区| 亚洲福利免费| 99在线|亚洲一区二区| 国产亚洲va综合人人澡精品| 欧美在线视频在线播放完整版免费观看 | 女生裸体视频一区二区三区 | 亚洲高清久久网| 国产麻豆综合| 久久久蜜桃一区二区人| 亚洲激情自拍| 午夜亚洲激情| 日韩亚洲欧美一区二区三区| 国产精品久久久久久久久| 欧美freesex8一10精品| 在线视频免费在线观看一区二区| 欧美一区二区视频在线观看2020 | 中文av一区特黄| 亚洲人成网在线播放| 欧美三级特黄| 欧美黄色成人网| 亚洲欧美日韩天堂一区二区| 一本大道久久a久久精二百| 亚洲国产精品精华液网站| 亚洲影院在线| 在线看片第一页欧美| 国产亚洲人成网站在线观看| 欧美精品激情| 欧美一区亚洲一区| 先锋影音久久久| 欧美影院成年免费版| 午夜精品福利一区二区蜜股av| 亚洲网站在线观看| 亚洲第一黄色| 亚洲国产岛国毛片在线| 亚洲高清二区| 亚洲国产裸拍裸体视频在线观看乱了中文| 久久久久综合网| 久久久亚洲高清| 麻豆freexxxx性91精品| 亚洲一区二区三区在线看| 一区在线观看视频| 国产精品美女久久久免费| 欧美高清hd18日本| 欧美精品成人一区二区在线观看| 欧美国产大片| 欧美日韩午夜| 国产欧美日韩另类视频免费观看| 欧美人与禽性xxxxx杂性| 久久精品视频亚洲| 亚洲综合不卡| 久久高清国产| 欧美激情精品久久久久久久变态| 欧美日韩美女在线| 国产精品自在在线| 激情久久久久久| 亚洲精品四区| 亚洲精品1区2区| 黑人一区二区| 亚洲精品国产精品国自产观看浪潮 | 亚洲精品视频在线看| 免费在线观看精品| 久久久噜噜噜久久人人看| 免费不卡中文字幕视频| 最新国产の精品合集bt伙计| 亚洲视频碰碰| 久久九九99| 欧美日韩国产高清| 国产偷久久久精品专区| 亚洲国产精品视频| 亚洲午夜视频在线| 蜜桃精品久久久久久久免费影院| 91久久精品国产91久久性色tv| 国产精品99久久不卡二区 | 欧美 日韩 国产在线 | 国外成人在线| 一区二区三区高清不卡| 一区二区激情小说| 久久久精品网| 欧美成人精品三级在线观看| 99国产精品视频免费观看| 欧美在线日韩精品| 欧美激情国产高清| 国产在线不卡| 亚洲欧美国产高清va在线播| 欧美不卡高清| 香蕉成人伊视频在线观看| 欧美华人在线视频| 伊人男人综合视频网| 午夜欧美精品久久久久久久| 亚洲国产毛片完整版| 久久精品99国产精品酒店日本| 欧美区一区二区三区| 伊人久久婷婷色综合98网| 午夜免费在线观看精品视频| 亚洲欧洲一区二区天堂久久 | 亚洲黄色成人久久久| 欧美专区在线播放| 美女日韩在线中文字幕| 亚洲影视中文字幕| 欧美日韩不卡视频| 亚洲国产成人av| 久久天天躁狠狠躁夜夜av| 亚洲一区国产视频| 欧美日韩亚洲高清一区二区| 亚洲国产日韩一区| 麻豆国产va免费精品高清在线| 亚洲欧美久久久久一区二区三区| 欧美精品18+| 亚洲区一区二| 欧美国产日韩在线观看| 久久精品综合| 国产一区二区精品久久91| 欧美在线免费观看| 亚洲在线视频观看| 国产精品国内视频| 亚洲午夜久久久久久尤物| 亚洲人精品午夜在线观看| 欧美jjzz| 亚洲日本中文字幕免费在线不卡| 免费观看国产成人| 久久久久久久网| 亚洲第一区中文99精品| 久热精品在线视频| 久久精品一本| 伊人成人在线| 欧美成人午夜视频| 欧美成人激情在线| 国产视频在线一区二区| 亚洲欧美另类国产| 亚洲男人第一网站| 国产精品综合| 久久免费视频在线观看| 久久精品成人一区二区三区| 精品成人国产| 亚洲国产精品va在线看黑人动漫| 欧美77777| 亚洲性视频网站| 亚洲一区二区高清视频| 国产毛片一区二区| 久久久久久综合网天天| 久久免费一区| 国产亚洲一区二区在线观看| 久久精品在这里| 老鸭窝91久久精品色噜噜导演| 国产一区二区三区奇米久涩 | 香港久久久电影| 在线观看国产精品淫| 亚洲国产精品电影在线观看| 欧美人与禽猛交乱配视频| 亚洲欧美国产精品专区久久| 欧美影院在线| 亚洲精品国精品久久99热| 亚洲免费大片| 欧美精品在线观看91| 亚洲欧美国产视频| 久久久99久久精品女同性| 亚洲美女精品成人在线视频| 欧美大片在线影院| 欧美日韩一卡二卡| 久久九九久久九九| 欧美精品在线观看播放| 欧美一区二区三区日韩视频| 久久一二三区| 亚洲女同同性videoxma| 久久久久免费视频| 亚洲视频狠狠|