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

隨筆 - 96  文章 - 255  trackbacks - 0
<2010年6月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

E-mail:zbln426@163.com QQ:85132383 長(zhǎng)期尋找對(duì)戰(zhàn)略游戲感興趣的合作伙伴。

常用鏈接

留言簿(21)

隨筆分類(lèi)

隨筆檔案

SDL相關(guān)網(wǎng)站

我的個(gè)人網(wǎng)頁(yè)

我的小游戲

資源下載

搜索

  •  

積分與排名

  • 積分 - 494500
  • 排名 - 39

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

        這段時(shí)間在復(fù)習(xí)C++基礎(chǔ),算法與數(shù)據(jù)結(jié)構(gòu),以及學(xué)習(xí)STL。所以,SDL的教程更新會(huì)慢些。因?yàn)槲疫€是以自己的項(xiàng)目為核心進(jìn)行學(xué)習(xí)的,所以基礎(chǔ)知識(shí)和游戲設(shè)計(jì)涉及到圖形,控制和多線(xiàn)程的內(nèi)容學(xué)習(xí),應(yīng)該是會(huì)有些交叉的。
        發(fā)現(xiàn)這個(gè)問(wèn)題,是因?yàn)橐恢币詠?lái)思考的一個(gè)算法——關(guān)于“集合”的實(shí)現(xiàn)。這個(gè)集合就是數(shù)學(xué)中的集合,與計(jì)算機(jī)中數(shù)列一個(gè)最大的不同在于,集合的元素是互異的。因?yàn)檫@兩天在熟悉vector,所以覺(jué)得用vector實(shí)現(xiàn)集合再合適不過(guò)了。STL確實(shí)是很好很強(qiáng)大的體系,無(wú)論是內(nèi)存管理,還是鏈表的實(shí)現(xiàn),讓我們可以省很多心。其實(shí)關(guān)于為什么要實(shí)現(xiàn)集合,也是因?yàn)槲以谟?jì)劃實(shí)現(xiàn)類(lèi)似英雄無(wú)敵戰(zhàn)場(chǎng)計(jì)算移動(dòng)的一系列算法中,很多地方會(huì)用到集合的概念,甚至包括并集和差集等等。也許我想到的算法是很笨拙的,但是在我還沒(méi)有完全閱讀相關(guān)的已有代碼之前,覺(jué)得完全憑自己的認(rèn)識(shí),實(shí)現(xiàn)這些算法還是很有意義的,所以,從學(xué)習(xí)C++的第一天開(kāi)始,我就在試圖找到解決這些問(wèn)題的方法,而現(xiàn)在,越來(lái)越清晰了,呵呵。
        我的思路很直接也很簡(jiǎn)單,就是把一個(gè)數(shù)組中的元素往一個(gè)新的數(shù)組中填,新填充的元素會(huì)遍歷新數(shù)組中已有的元素,如果與之互異,則填入(push),否則就跳到下一個(gè)。以上就已經(jīng)確立了成員數(shù)據(jù)(私有)和構(gòu)造函數(shù)。因?yàn)槲覀冃枰?#8220;集合化”了的數(shù)組是可以被外部訪問(wèn)的,所以一個(gè)最簡(jiǎn)單的方法就是把成員數(shù)據(jù)公有——這確實(shí)是很簡(jiǎn)單,而且這樣就不會(huì)出現(xiàn)今天我們要討論的問(wèn)題了;另外一個(gè)笨辦法是用一個(gè)公有方法,返回成員數(shù)據(jù)的值——我就是這么做的,因?yàn)檫@貌似更符合OOP的“數(shù)據(jù)隱藏”的精神-_-!!!。很快可以寫(xiě)出頭文件:
#ifndef AGGREGATE_H_
#define AGGREGATE_H_

#include 
<iostream>
#include 
<vector>
#include 
<algorithm>

class Aggregate
{
private:
    std::vector
<int> agg;
public:
    Aggregate(std::vector
<int>& temp);
    
const std::vector<int> getAgg() const;
};

#endif
請(qǐng)注意那個(gè)紅色的const,其實(shí)我想說(shuō)的是,第一次寫(xiě)這個(gè)程序的時(shí)候,我并沒(méi)有這個(gè)const。一直以來(lái),除了在重載“=”的時(shí)候我大概清楚修飾返回值const的作用是可以避免讓返回值做左值,其他時(shí)候還真不太明白這個(gè)const的作用,只是本著C++的精神——能const就const吧-_-!!!。實(shí)現(xiàn)文件:
#include "aggregate.h"

Aggregate::Aggregate(std::vector
<int>& temp)
{
    
for ( std::vector<int>::iterator pTemp = temp.begin(); pTemp != temp.end(); pTemp++ ) {
        
bool findSame = false;
        
for ( std::vector<int>::iterator pAgg = agg.begin(); pAgg != agg.end(); pAgg++ )
            
if ( *pTemp == *pAgg )
                findSame 
= true;
        
if ( findSame == false )
            agg.push_back(
*pTemp);
    }
}

const std::vector<int> Aggregate::getAgg() const
{
    
return agg;
}
一切都很完美,不是嗎?順手就繼續(xù)寫(xiě)出一個(gè)測(cè)試用的程序:
#include "aggregate.h"

void show(int& i);

int main(int argc, char* argv[])
{
    std::vector<int> tempArray;
    int temp;
    bool goon = true;

    while ( goon == true ) {
        std::cout << "#" << tempArray.size()+1 << "= ";
        std::cin >> temp;
        if ( temp == -1 ) {
            goon = false;
            continue;
        }
        tempArray.push_back(temp);
    }

    std::cout << "You've entered " << tempArray.size() << " numbers." << std::endl;

    for_each(tempArray.begin(), tempArray.end(), show);

    std::cout << "----------------------------\n" << "Now, to be aggregate\n";

    Aggregate tempAgg (tempArray);
    std::cout << "There are " << tempAgg.getAgg().size() << " different numbers.\n";
    for_each(tempAgg.getAgg().begin(), tempAgg.getAgg().end(), show);


    return 0;
}

void show(int& i)
{
    std::cout << i << std::endl;
}
很不幸,編譯正常的通過(guò)了(注意,沒(méi)有紅色的const的時(shí)候)。
但是,運(yùn)行時(shí)出現(xiàn)了錯(cuò)誤。
運(yùn)行時(shí)錯(cuò)誤是件令人很郁悶的事情,因?yàn)檫@意味著編譯器不會(huì)幫你找到出錯(cuò)的地方。
幸運(yùn)的是,直覺(jué)讓我覺(jué)得類(lèi)似tempAgg.getAgg().begin()的用法有問(wèn)題,所以,我改成了:(紫色那部分代碼)
    std::cout << "----------------------------\n" << "Now, to be aggregate\n";

    Aggregate tempAgg (tempArray);
    std::vector
<int> tempAggArray = tempAgg.getAgg();
    std::cout 
<< "There are " << tempAggArray.size() << " different numbers.\n";
    for_each(tempAggArray.begin(), tempAggArray.end(), show);
這樣,問(wèn)題是解決了。但是我們回頭分析一下,剛才的問(wèn)題到底出在什么地方呢?
其實(shí),如果我們加上紅色的const,使用原來(lái)的代碼進(jìn)行編譯的時(shí)候,編譯器是可以指出我們的錯(cuò)誤的,確實(shí)是tempAgg.getAgg().begin()的用法出了問(wèn)題。具體的原因包含在<algorithm>里面,我沒(méi)有仔細(xì)去分析,但是我們至少明白了,方法begin()會(huì)試圖修改其對(duì)象的返回值!
        讓錯(cuò)誤被發(fā)現(xiàn)在編譯階段,遠(yuǎn)遠(yuǎn)好于被發(fā)現(xiàn)在運(yùn)行時(shí)階段。我想,這就是C++中const最大的作用。所以,總結(jié)起來(lái)還是C++的一句話(huà),能const,就const吧。:)

FeedBack:
# re: 從“集合”實(shí)例分析修飾函數(shù)返回值的const作用 2008-03-14 21:30 fcc-casia
"就是把一個(gè)數(shù)組中的元素往一個(gè)新的數(shù)組中填,新填充的元素會(huì)遍歷新數(shù)組中已有的元素,如果與之互異,則填入(push),否則就跳到下一個(gè)。"像完成這種功能為何不用map?平衡二叉樹(shù)的效率應(yīng)該比線(xiàn)性列表高吧?  回復(fù)  更多評(píng)論
  
# re: 從“集合”實(shí)例分析修飾函數(shù)返回值的const作用[未登錄](méi) 2008-03-15 00:21 lf426
呵呵,本人水平有限哈。數(shù)據(jù)結(jié)構(gòu)和算法還在學(xué)習(xí)中,STL的那些容器還沒(méi)有完全體會(huì)在不同情況下使用的優(yōu)勢(shì)和劣勢(shì)。  回復(fù)  更多評(píng)論
  
# re: 從“集合”實(shí)例分析修飾函數(shù)返回值的const作用[未登錄](méi) 2009-01-01 19:47 Felicia
C++的STL里面已經(jīng)有集合了
#include <set>  回復(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>
              亚洲级视频在线观看免费1级| 一本久道综合久久精品| 亚洲视频在线观看| 亚洲欧洲在线看| 欧美sm视频| 亚洲欧洲一区二区在线观看| 欧美激情久久久久久| 欧美精品综合| 国产精品99久久久久久久久久久久| 亚洲免费高清| 国产精品入口66mio| 久久九九精品99国产精品| 久久久精品国产免费观看同学 | 在线亚洲成人| 国产酒店精品激情| 另类酷文…触手系列精品集v1小说| 久热精品视频在线观看| 99pao成人国产永久免费视频| 99re8这里有精品热视频免费| 国产欧美日韩视频| 美女主播一区| 欧美日韩亚洲一区二区| 久久国产色av| 欧美成人一二三| 亚洲欧美在线看| 久久久久久国产精品一区| 一本色道久久综合亚洲精品高清| 亚洲综合色在线| 亚洲精选久久| 欧美一级久久久久久久大片| 亚洲精品影视| 新67194成人永久网站| 91久久黄色| 国产日韩欧美视频| 欧美黄色视屏| 免费观看成人鲁鲁鲁鲁鲁视频 | 亚洲第一中文字幕| 一本色道久久88综合日韩精品| 国内久久精品| 亚洲无限乱码一二三四麻| 伊人色综合久久天天五月婷| 一本色道久久综合亚洲精品按摩 | 一本久久a久久免费精品不卡| 欧美在线播放| 亚洲欧美日本另类| 欧美激情精品久久久久久免费印度 | 亚洲一卡二卡三卡四卡五卡| 久久婷婷国产综合尤物精品| 午夜日韩在线| 欧美视频1区| 亚洲人成毛片在线播放| 1024亚洲| 久久这里只有| 狼人天天伊人久久| 国产人成一区二区三区影院| 在线一区二区日韩| 一本色道久久综合精品竹菊| 欧美黄色免费网站| 亚洲第一区色| 亚洲日本精品国产第一区| 久久久999成人| 久久天天狠狠| 激情综合在线| 久久久久国内| 免费欧美在线| 激情六月婷婷综合| 久久av在线| 麻豆乱码国产一区二区三区| 伊人久久综合97精品| 久久久久久夜精品精品免费| 牛夜精品久久久久久久99黑人| 国内精品亚洲| 欧美11—12娇小xxxx| 欧美成人伊人久久综合网| 亚洲国产清纯| 欧美精品v日韩精品v国产精品| 亚洲国产一区二区三区a毛片| 日韩一二三在线视频播| 欧美日韩在线一区| 亚洲欧美日韩视频一区| 久久久久久婷| 亚洲欧洲另类| 国产精品a久久久久久| 亚洲一区二区视频| 久久免费国产精品| 亚洲激情在线视频| 欧美三级视频在线观看| 亚洲一区精品在线| 麻豆精品网站| 一个人看的www久久| 国产精品免费电影| 欧美在线免费视频| 亚洲国产免费看| 欧美日韩一区二区三区| 老司机午夜精品视频| 亚洲国产网站| 国产精品成人v| 久久精品男女| 99热在这里有精品免费| 久久久777| 亚洲精品偷拍| 国产精品一区一区| 美女黄毛**国产精品啪啪 | 香蕉av福利精品导航| 在线精品观看| 国产精品久久一区二区三区| 久久久久久久久蜜桃| 日韩午夜高潮| 另类春色校园亚洲| 亚洲男同1069视频| 91久久在线观看| 国产欧美亚洲日本| 欧美日韩国产bt| 久久久久久久久久看片| 亚洲一区免费网站| 亚洲国产高潮在线观看| 久久成人免费| 午夜精品久久久久久久久久久久久| 在线观看国产精品网站| 国产伦精品一区二区三区在线观看| 久久在线免费观看| 欧美一区二区在线看| 亚洲无亚洲人成网站77777 | 欧美在线中文字幕| 亚洲视频网在线直播| 亚洲人成网站影音先锋播放| 激情综合视频| 狠狠色狠狠色综合日日tαg| 国产精品丝袜91| 欧美色图麻豆| 欧美视频在线观看一区| 欧美激情小视频| 欧美va天堂va视频va在线| 久久都是精品| 久久国产精品99国产| 香蕉免费一区二区三区在线观看 | 亚洲欧洲一区二区在线观看 | 久热国产精品视频| 久久成年人视频| 久久成人精品| 久久久久这里只有精品| 久久久久久久久久码影片| 性伦欧美刺激片在线观看| 亚洲欧美www| 亚洲欧美在线磁力| 欧美亚洲一区三区| 性一交一乱一区二区洋洋av| 亚洲欧美日韩国产中文| 午夜精品福利一区二区蜜股av| 亚洲天堂av图片| 亚洲欧美日本精品| 欧美伊人精品成人久久综合97 | 亚洲影视九九影院在线观看| 在线视频亚洲一区| 亚洲综合日韩在线| 欧美一区二区三区免费大片| 久久成人精品| 免费人成网站在线观看欧美高清| 欧美成人精品福利| 亚洲国产另类精品专区| 一本色道久久加勒比88综合| 中文一区二区| 久久成人精品无人区| 欧美成人dvd在线视频| 在线视频一区观看| 午夜精品久久久久久99热软件| 久久精品免费看| 欧美大尺度在线| 欧美日韩中文字幕在线| 国产欧美日韩亚洲| 亚洲电影有码| 亚洲午夜电影网| 久久久久久亚洲精品不卡4k岛国| 欧美国产精品久久| 一区二区成人精品 | 性欧美大战久久久久久久免费观看| 久久国产99| 欧美三级日本三级少妇99| 国产三区精品| 日韩一级大片| 久久久久看片| av成人免费在线观看| 欧美在线播放| 欧美亚日韩国产aⅴ精品中极品| 国产一区亚洲| 亚洲图片欧美午夜| 久久人人爽国产| 在线视频欧美日韩精品| 麻豆精品在线视频| 国产精品剧情在线亚洲| 91久久夜色精品国产网站| 欧美怡红院视频| 亚洲精品自在久久| 久久久久久国产精品一区| 国产精品国内视频| 亚洲毛片网站| 老司机凹凸av亚洲导航| 亚洲伊人观看| 欧美日韩一本到| 亚洲三级视频|