国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

實例說明下標操作符重載模擬多維數(shù)組

2020-02-24 14:29:57
字體:
供稿:網(wǎng)友

相信很多程序員在開發(fā)的時候,都會遇到瓶頸的時候,這個時候我們要怎么處理呢?網(wǎng)上查詢信息?但是很多知識在網(wǎng)絡(luò)上是沒辦法查找到的,今天武林技術(shù)頻道小編為大家?guī)韺嵗f明下標操作符重載模擬多維數(shù)組

?

??? template <typename T_CELL_STYLE>
??? class CMap
??? {
??? public:
??????? CMap(IN UINT row_num, IN UINT col_num,
????????????????? IN T_CELL_STYLE cell_style = static_cast<T_CELL_STYLE>(0));

??????? // 下標操作符重載
??????? typename vector<T_CELL_STYLE>::iterator operator[](IN UINT x);

?

??? public:
??????? const UINT m_ROW_NUM;??? // 地圖網(wǎng)格行數(shù)
??????? const UINT m_COL_NUM;??? // 地圖網(wǎng)格列數(shù)
??? private:
??????? vector<T_CELL_STYLE> _m_map_data;??? // 存放地圖數(shù)據(jù)

??? }; /* class CMap */


我們知道下標操作符重載不能編寫成如下形式:
T_CELL_STYLE operator[][](IN UINT x, IN UINT y);

?

雖然不能直接實現(xiàn)一對下標操作符重載,但是我們可以間接模擬。

思路是這樣的,先通過單下標操作返回一個具有下標操作能力的左值,對左值進行下標操作,兩個下標操作表達式聯(lián)立就實現(xiàn)了雙下標操作。先看如下示例:

?

??? // 地圖尺寸
??? #define _MAP_ROW?? 30
??? #define _MAP_COL??? 36
??? // 地圖單元格樣式
??? typedef enum {
??????? _CELL_GROUND,
??????? _CELL_GRASS,
??????? _CELL_BRICK,
??????? _CELL_STEEL,
??????? _CELL_WATER
??? } CELLSTYLE;

??? CMap<CELLSTYLE> myMap(_MAP_ROW, _MAP_COL, _CELL_GROUND);
??? // 獲取地圖第3行第5列單元格樣式
??? vector<T_CELL_STYLE>::iterator iter = myMap[3];
??? CELLSTYLE aCell = iter[5];


我們將上面兩個下標操作表達式聯(lián)立,如下:
CELLSTYLE aCell myMap[3][5];

?

這樣就得到了雙下標操作,看起來就像操作二維數(shù)組。好了,讓我們來看一下如何重載。

?

??? template <typename T_CELL_STYLE>
??? inline typename vector<T_CELL_STYLE>::iterator
??? CMap<T_CELL_STYLE>::operator[](IN UINT x)
??? {
??????? if (m_ROW_NUM <= x)
??????? {
??????????? overflow_error e("overflow - CMap<T_CELL_STYLE>::operator[]");
??????????? throw(e);
??????? }
??????? return _m_map_data.begin() + x * m_COL_NUM;
??? }

?以上就是武林技術(shù)頻道小編介紹的關(guān)于實例說明下標操作符重載模擬多維數(shù)組,其實這個介紹對于初級程序員應(yīng)該是很需要的,希望大家可以分配好時間進行學(xué)習(xí)哦。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 靖江市| 葫芦岛市| 民丰县| 宝清县| 镇平县| 乌鲁木齐市| 大同市| 嘉禾县| 东山县| 安义县| 抚远县| 贵州省| 白朗县| 旌德县| 玉龙| 修文县| 玉林市| 玛多县| 宣城市| 道孚县| 海盐县| 宁阳县| 南丰县| 临江市| 东乌珠穆沁旗| 海晏县| 平谷区| 西盟| 祁阳县| 仁布县| 遂溪县| 日喀则市| 上栗县| 句容市| 安福县| 丘北县| 中方县| 新乡县| 左权县| 台北县| 靖安县|