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

隨筆 - 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>
              99精品视频免费观看| 99国产精品久久久久老师 | 麻豆久久久9性大片| 欧美一区二区在线看| 欧美一区二区三区在| 欧美一二三视频| 久久国产精品免费一区| 女人香蕉久久**毛片精品| 欧美/亚洲一区| 亚洲精品国产精品国自产观看| 蜜桃av一区二区| 亚洲人成在线观看网站高清| 中文日韩在线视频| 欧美在线视频免费观看| 乱人伦精品视频在线观看| 欧美日韩国产美| 国产欧美精品国产国产专区| 亚洲欧美另类中文字幕| 国产精品免费观看在线| 欧美另类综合| 国产色爱av资源综合区| 在线观看三级视频欧美| 99热这里只有精品8| 香蕉乱码成人久久天堂爱免费| 欧美在线一二三四区| 欧美不卡高清| 亚洲综合精品一区二区| 欧美韩国日本一区| 狠狠做深爱婷婷久久综合一区| 日韩视频在线永久播放| 欧美一区国产二区| 亚洲国产欧美在线人成| 西瓜成人精品人成网站| 欧美日韩成人综合| 亚洲国产成人精品女人久久久 | 亚洲人屁股眼子交8| 久久久国产一区二区| 国产精品国产馆在线真实露脸| 亚洲电影第三页| 久久精品国产清高在天天线 | 日韩视频永久免费| 久久久亚洲影院你懂的| 国产麻豆精品theporn| 亚洲午夜精品一区二区| 亚洲电影欧美电影有声小说| 久久精品国产第一区二区三区| 国产精品第一区| 在线亚洲电影| 亚洲精品一级| 免费观看亚洲视频大全| 国模私拍视频一区| 久久国产精品99精品国产| 亚洲直播在线一区| 国产精品av久久久久久麻豆网| 亚洲乱码国产乱码精品精可以看 | 亚洲蜜桃精久久久久久久| 欧美不卡一卡二卡免费版| 红桃视频国产精品| 久久久一区二区| 欧美一进一出视频| 国产一区在线视频| 久久午夜av| 久久久人成影片一区二区三区| 国内成+人亚洲| 久久一区中文字幕| 久久久久国产免费免费| 精品动漫3d一区二区三区免费版| 久久久久在线| 美女尤物久久精品| 久久久午夜视频| 亚洲欧洲日产国码二区| 最新成人在线| 国产精品yjizz| 亚洲欧美日韩精品一区二区| 一区二区欧美国产| 国产噜噜噜噜噜久久久久久久久| 欧美一区二区三区男人的天堂| 性视频1819p久久| 激情av一区| 亚洲国产高清自拍| 欧美日韩一区三区四区| 久久riav二区三区| 免费91麻豆精品国产自产在线观看| 亚洲老板91色精品久久| 在线亚洲精品| 狠狠操狠狠色综合网| 欧美激情欧美狂野欧美精品 | 欧美在线一区二区| 黄色成人在线观看| 亚洲国产欧美一区二区三区丁香婷| 欧美视频在线观看| 久久久久久久综合色一本| 久久久久久夜| 一区二区三区精品国产| 欧美亚洲综合另类| 一区二区三区av| 性欧美在线看片a免费观看| 欧美一区二区在线视频| 欧美激情一二三区| 欧美激情综合网| 西瓜成人精品人成网站| 久久久成人网| 亚洲视频免费看| 午夜欧美不卡精品aaaaa| 亚洲国产成人精品久久| 亚洲一区二区在线免费观看视频 | 欧美视频一区| 免费影视亚洲| 国产精品高清在线观看| 麻豆91精品| 国产精品揄拍500视频| 亚洲激情偷拍| 美女黄色成人网| 久久国产欧美精品| 亚洲第一主播视频| 最新精品在线| 一本色道久久综合亚洲精品不卡| 老司机午夜精品视频在线观看| 欧美女主播在线| 久热精品视频在线| 国产精品成人久久久久| 亚洲丰满少妇videoshd| 国产亚洲精品成人av久久ww| 亚洲日本激情| 伊人婷婷欧美激情| 欧美一区二区福利在线| 亚洲专区一区| 欧美日韩国产综合新一区| 欧美.www| 亚洲国产精品va在线观看黑人| 亚洲欧美在线网| 亚洲欧美日韩视频一区| 欧美日韩午夜在线视频| 亚洲精品国产精品国自产观看| 亚洲国产专区| 看欧美日韩国产| 久久久噜噜噜久噜久久| 国产日韩在线一区| 亚洲欧美日韩综合| 欧美一级视频免费在线观看| 欧美性大战久久久久久久蜜臀| 亚洲欧洲一区二区三区| 日韩一级成人av| 欧美黑人在线观看| 99精品久久久| 亚洲女人天堂av| 国产精品裸体一区二区三区| 亚洲一区二区在线免费观看视频| 亚洲一区黄色| 国产精品一区=区| 久久福利电影| 欧美大片免费观看在线观看网站推荐| 国产真实久久| 美国成人直播| 亚洲美女视频| 午夜亚洲性色福利视频| 国产模特精品视频久久久久 | 99视频+国产日韩欧美| 99精品视频免费观看| 欧美日韩高清在线播放| 一区二区三区欧美在线观看| 亚洲欧美一区二区三区极速播放| 国产精品亚洲一区| 久久riav二区三区| 一色屋精品亚洲香蕉网站| 狂野欧美一区| 亚洲卡通欧美制服中文| 先锋影音久久久| 亚洲高清不卡一区| 欧美乱人伦中文字幕在线| 亚洲自啪免费| 欧美激情第一页xxx| 欧美日韩网址| 亚洲欧美国产一区二区三区| 久久一区中文字幕| 欧美久久视频| 小黄鸭视频精品导航| 欧美激情视频免费观看| 亚洲天堂久久| 亚洲国产欧美在线人成| 国产精品日本精品| 欧美不卡视频| 久久精品视频va| 一区二区三区精密机械公司| 免费欧美在线| 国产精品综合色区在线观看| 欧美在线视频观看| 一本不卡影院| 欧美国产一区二区在线观看 | 久久只精品国产| 亚洲视频999| 亚洲国产精品黑人久久久| 国产精品亚洲片夜色在线| 欧美国产日韩在线观看| 亚洲免费小视频| 亚洲最新在线视频| 亚洲国产三级在线| 久久久综合网| 午夜视频一区二区| 亚洲特级毛片|