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

MyMSDN

MyMSDN記錄開(kāi)發(fā)新知道

C++ notes (5)

41、vector、list、deque的性能初窺

int large_size = 10000000;

cout_current_time("start init vector!\t");
vector<string> svec1(large_size, "Hello");
vector<string> svec2(large_size, "Hi");
cout_current_time("end init vector!\t");

cout_current_time("start init list!\t");
list<string> slist1(large_size, "Hello");
list<string> slist2(large_size, "Hi");
cout_current_time("end init list!\t");

cout_current_time("start init deque!\t");
deque<string> sdeq1(large_size, "Hello");
deque<string> sdeq2(large_size, "Hi");
cout_current_time("end init deque!\t");

用事實(shí)說(shuō)話最有說(shuō)服力:

start init vector!    current time : 5:5:52
end init vector!    current time : 5:5:55
start init list!    current time : 5:5:55
end init list!    current time : 5:6:14
start init deque!    current time : 5:6:14
end init deque!    current time : 5:6:26

可以看出大致時(shí)間比例為3/19/12。雖然不足以佐證它們的性能差距,但vector的常用似乎有了更充分的理由。

這里使用了一個(gè)簡(jiǎn)單的時(shí)間函數(shù)大致如下:

#include <time.h>

typedef struct
tm * time_type; time_type get_current_time(void) { time_t t; t = time(NULL); return localtime(&t); }

42、容器自增長(zhǎng)(P286)

每種實(shí)現(xiàn)都要求遵循以下原則:確保push_back操作高效地在vector中添加元素。從技術(shù)上來(lái)說(shuō),在原來(lái)為空的vector容器上n次調(diào)用push_back函數(shù),從而創(chuàng)建擁有n個(gè)元素的vector容器,其執(zhí)行時(shí)間永遠(yuǎn)不能超過(guò)n的常量倍。

43、類(lèi)定義中為何不能具有自身的數(shù)據(jù)成員(P375)

因?yàn)橹挥挟?dāng)類(lèi)定義體完成后才能定義類(lèi),因此類(lèi)不能具有自身類(lèi)型的數(shù)據(jù)成員。然而,只要類(lèi)名一出現(xiàn)就可以認(rèn)為該類(lèi)已聲明。因此,類(lèi)的數(shù)據(jù)成員可以是指向自身類(lèi)型的指針或引用:

class LinkScreen {

Screen window;

LinkScreen *next;

LinkScreen *prev;

};

44、兩種引用類(lèi)類(lèi)型的方法(P376)

Sales_item item1; //default initialized object of type Sales_item

class Sales_item item1; //equivalent definition of item1

兩種引用類(lèi)類(lèi)型的方法是等價(jià)的。第二種方法是從C繼承而來(lái)的,在C++中仍然有效。第一種更為簡(jiǎn)練,由C++語(yǔ)言引入,使得類(lèi)類(lèi)型更容易使用。

45、為什么類(lèi)的定義以分號(hào)結(jié)束(P376)

分號(hào)是必須的,因?yàn)樵陬?lèi)定義之后可以接一個(gè)對(duì)象定義列表。定義必須以分號(hào)結(jié)束:

class Sales_item {/* … */};

class Sales_item {/* … */} accum, trans;

46、形參表和函數(shù)體處于類(lèi)作用域中,函數(shù)返回類(lèi)型不一定在類(lèi)作用域中

在定義于類(lèi)外部的成員函數(shù)中,形參表和成員函數(shù)體都出現(xiàn)在成員名之后。這些都是在類(lèi)作用域中定義,所以可以不用限定而引用其他成員。因?yàn)樾螀⒈硎窃赟creen類(lèi)作用域內(nèi),所以不必知名我們想要的是Screen::index。

如果返回類(lèi)型使用由類(lèi)定義的類(lèi)型,則必須使用完全限定名。

#include "stdafx.h"
#include <iostream>

class MyClass
{
public :
    typedef int index_t;
    index_t twice(index_t in);
};

MyClass::index_t MyClass ::twice(index_t in)
{
    return in * 2;
}

int _tmain(int argc, _TCHAR* argv[])
{
    using namespace std; 
    
    MyClass obj;
    MyClass::index_t x, y;
    
    x = 10;
    y = obj.twice(x);

    cout<<"x = "<<x<<"; y = "<<y<<";"<<endl;

    return 0;
}

47、構(gòu)造函數(shù)初始化式(P387)

與任意的成員函數(shù)一樣,構(gòu)造函數(shù)可以定義在類(lèi)的內(nèi)部或外部。構(gòu)造函數(shù)初始化式只在構(gòu)造函數(shù)的定義中而不是聲明中指定。

構(gòu)造函數(shù)初始化列表難以理解的一個(gè)原因在于,省略初始化列表并在構(gòu)造函數(shù)的函數(shù)體內(nèi)對(duì)數(shù)據(jù)成員賦值是合法的。

在構(gòu)造函數(shù)初始化列表中沒(méi)有顯式提及的每個(gè)成員,使用與初始化變量相同的規(guī)則來(lái)進(jìn)行初始化。運(yùn)行該類(lèi)型的默認(rèn)構(gòu)造函數(shù),來(lái)初始化類(lèi)類(lèi)型的數(shù)據(jù)成員。內(nèi)置或復(fù)合類(lèi)型的成員的初始值依賴(lài)于對(duì)象的作用域:在局部作用域中這些成員不被初始化,而在全局作用域中它們被初始化為0。

如果那個(gè)類(lèi)沒(méi)有默認(rèn)構(gòu)造函數(shù),則編譯器嘗試使用默認(rèn)構(gòu)造函數(shù)將會(huì)失敗。在這種情況下,為了初始化數(shù)據(jù)成員,必須提供初始化式。

對(duì)于這樣的成員,在構(gòu)造函數(shù)函數(shù)體中對(duì)它們賦值不起作用。沒(méi)有默認(rèn)構(gòu)造函數(shù)的類(lèi)類(lèi)型成員,以及const或引用類(lèi)型的成員,不管是哪種類(lèi)型,都必須在構(gòu)造函數(shù)初始化列表中進(jìn)行初始化。

因?yàn)閮?nèi)置類(lèi)型的成員不進(jìn)行隱式初始化,所以對(duì)這些成員是進(jìn)行初始化還是賦值似乎都無(wú)關(guān)緊要。除了兩個(gè)例外,對(duì)非類(lèi)類(lèi)型的數(shù)據(jù)成員進(jìn)行賦值或使用初始化式在結(jié)果和性能上都是等價(jià)的。

48、成員初始化的次序

構(gòu)造函數(shù)初始化列表僅指定用于初始化成員的值,并不指定這些初始化執(zhí)行的次序。成員被初始化的次序就是定義成員的次序。

class X{

int i;

int j;

public:

//run-time error: i is initialized before j

X(int val): j(val), i(j) {}

}

在這種情況下,構(gòu)造函數(shù)初始化列表看起來(lái)似乎是用val初始化j,然后再用j來(lái)初始化i。然而i首先被初始化。這個(gè)初始化列表的效果是用尚未初始化的j值來(lái)初始化i!

49、使用默認(rèn)構(gòu)造函數(shù)(P393)

常犯的一個(gè)錯(cuò)誤是采用以下方式聲明一個(gè)用默認(rèn)構(gòu)造函數(shù)初始化的對(duì)象:

Sales_item myobj();

Sales_item myobj(); //ok: but defines a function, not an object

if(myobj.same_isbn(Primer_3rd_ed)) // error: myobj is a function

正確的方式應(yīng)該是去掉相應(yīng)的括號(hào):

Sales_item myobj;

或者

Sales_item myobj = Sales_item();

50、顯式或隱式初始化

#include "stdafx.h"
#include <iostream>
using namespace std; 
class MyClass
{
public :
    typedef int index_t;
    bool same_object(MyClass obj);

public :
    MyClass(int default_index = 5)
        :default_index(default_index),
        m_name("default_name"){}
    MyClass::MyClass(std::string name);

public :
    int default_index;
    std::string m_name;
};

MyClass::MyClass(std::string name)
        :default_index(0), m_name(name){}

bool MyClass::same_object(MyClass obj)
{
    cout<<"m_name = "<<m_name.c_str()<<endl;
    cout<<"obj.m_name = "<<obj.m_name.c_str()<<endl;
    return strcmp(obj.m_name.c_str(), m_name.c_str()) == 0;
}

int _tmain(int argc, _TCHAR* argv[])
{    
    MyClass obj;

    cout<<"explicit : "<<obj.same_object(MyClass("default_name"))<<endl;
    cout<<"implicit : "<<obj.same_object(string("default_name"))<<endl;

    return 0;
}

因?yàn)榫哂幸詓td::string為形參的構(gòu)造函數(shù),因此在調(diào)用需要MyClass對(duì)象的same_object成員函數(shù)時(shí),會(huì)自動(dòng)隱式調(diào)用該構(gòu)造函數(shù)構(gòu)建MyClass對(duì)象,用于操作。但生成的MyClass對(duì)象是臨時(shí)對(duì)象,在same_object函數(shù)調(diào)用完成后銷(xiāo)毀。如果為了避免產(chǎn)生隱式轉(zhuǎn)換可以使用explicit關(guān)鍵字來(lái)抑制由構(gòu)造函數(shù)定義的隱式轉(zhuǎn)換:

explicit

posted on 2009-02-12 01:06 volnet 閱讀(1239) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): C++ Primer 學(xué)習(xí)筆記

特殊功能
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            中文日韩欧美| 久久成人免费电影| 翔田千里一区二区| 亚洲精品欧美日韩专区| 欧美天堂亚洲电影院在线播放 | 久久午夜精品一区二区| 尤物精品国产第一福利三区 | 亚洲成人在线网站| 国产免费一区二区三区香蕉精| 欧美日韩免费在线| 亚洲精品少妇30p| 久久久久久久久一区二区| 中文精品视频一区二区在线观看| 亚洲国产日韩欧美在线动漫| 久久综合国产精品| 欧美大胆成人| 亚洲国产精品成人| 亚洲欧洲一区二区三区| 亚洲高清在线观看一区| 久久国产加勒比精品无码| 亚洲综合国产| 亚洲精品国产精品国自产观看浪潮| 玉米视频成人免费看| 在线免费日韩片| 日韩一级网站| 欧美亚洲一区三区| 久久综合999| 亚洲人成亚洲人成在线观看图片| 亚洲美女黄网| 亚洲免费网址| 免费在线观看一区二区| 欧美色欧美亚洲高清在线视频| 老鸭窝毛片一区二区三区| 欧美国产精品久久| 99热这里只有精品8| 亚洲人成啪啪网站| 亚洲国产精品va在线观看黑人| 亚洲激情成人网| 亚洲欧美日韩区| 久久久九九九九| 欧美精品久久久久久久久久| 国产精品啊v在线| 国产日韩欧美a| 亚洲国产成人久久综合一区| 亚洲欧洲综合| 欧美亚洲综合久久| 欧美激情精品久久久久久免费印度| 日韩一本二本av| 久久精品中文字幕一区二区三区 | 久久国产直播| 久久一区亚洲| 亚洲视频中文| 欧美不卡视频一区发布| 老色鬼精品视频在线观看播放| 欧美精品一区二区视频 | 欧美韩日一区二区| 国产夜色精品一区二区av| 最新高清无码专区| 在线亚洲欧美专区二区| 久久综合国产精品| 午夜精品久久久久久| 西西人体一区二区| 国内自拍一区| 免费在线观看一区二区| 欧美高清在线一区| 欧美一级大片在线观看| 久久九九免费视频| 一本不卡影院| 亚洲欧美日本视频在线观看| 国产亚洲毛片在线| 最近中文字幕日韩精品| 国产欧美日韩精品a在线观看| 免费亚洲电影在线| 国产精品伦一区| 欧美人与禽猛交乱配| 欧美91精品| 91久久精品美女高潮| 免费成人美女女| 午夜精品区一区二区三| 国产精品日韩欧美一区| 亚洲欧美中文字幕| 国产精品99久久久久久久vr| 欧美色图麻豆| 亚洲在线观看视频| 日韩午夜电影在线观看| 欧美日韩国语| 亚洲一区二区在线观看视频| 一本久久综合亚洲鲁鲁| 欧美日韩一区免费| 一区在线免费观看| 午夜精品久久久久久久99水蜜桃| 亚洲人午夜精品免费| 欧美日韩精品高清| 亚洲一区二三| 亚洲一区日本| 国产一区二区成人久久免费影院| 久久久久9999亚洲精品| 久久久久久国产精品一区| 国产欧美一区二区精品忘忧草 | 欧美国产一区二区| 欧美日韩高清在线播放| 亚洲女ⅴideoshd黑人| 亚洲欧美经典视频| 在线观看一区视频| 亚洲麻豆一区| 国产午夜久久| 欧美国产日产韩国视频| 欧美日韩成人一区| 性色av一区二区怡红| 久久免费视频网| 亚洲视频一二区| 欧美一区二区视频观看视频| 91久久国产综合久久| 欧美成人免费在线视频| 久久久精品国产免大香伊| 国产精品视频一区二区三区| 亚洲午夜一区| 久久精品网址| 女同一区二区| 一区二区高清在线观看| 国产无遮挡一区二区三区毛片日本| 狂野欧美一区| 欧美系列精品| 欧美成人三级在线| 国产精品久久一区二区三区| 欧美大胆成人| 久久精品欧美日韩| 久久精品国产免费| 在线看日韩欧美| 亚洲一区激情| 亚洲另类春色国产| 欧美在线综合视频| 亚洲欧美日韩精品久久久| 美女视频网站黄色亚洲| 夜夜精品视频| 欧美成人在线免费观看| 久久综合亚州| 国产精品影音先锋| 99热免费精品| 亚洲毛片在线免费观看| 久久综合色一综合色88| 久久aⅴ国产紧身牛仔裤| 久久精品二区| 欧美在线看片a免费观看| 欧美视频在线一区| 亚洲精品日韩久久| 亚洲精品中文字幕在线| 另类av一区二区| 蜜桃久久精品一区二区| 国产亚洲人成a一在线v站| 亚洲性感激情| 亚洲天天影视| 久久全国免费视频| 亚洲一区免费看| 欧美日韩国产综合视频在线观看中文| 麻豆成人综合网| 国产精品videosex极品| 一区二区高清| 亚洲淫性视频| 国产精品日韩电影| 亚洲欧美视频| 久久国产精品久久久久久久久久 | 亚洲欧美激情四射在线日| 亚洲免费小视频| 国产精品高潮呻吟| 亚洲字幕在线观看| 久久久久国产成人精品亚洲午夜| 国产亚洲视频在线观看| 久久精品国产精品 | 亚洲精品少妇| 欧美精品三级日韩久久| 欧美伦理影院| 午夜精品久久久久久久久久久久| 午夜精品久久久久久久久| 久久精品99久久香蕉国产色戒| 欧美亚洲尤物久久| 黑人巨大精品欧美黑白配亚洲| 免费不卡亚洲欧美| 亚洲美女视频在线观看| 欧美一级在线播放| 最近中文字幕日韩精品 | 久久av二区| 欧美大片在线观看一区二区| 一区二区三区精品| 国产日本欧洲亚洲| 欧美肥婆在线| 欧美一区二区三区四区高清 | 亚洲一区二区三区久久| 美女国产一区| 午夜亚洲伦理| 日韩视频永久免费观看| 国产九区一区在线| 欧美日本免费一区二区三区| 久久一区中文字幕| 亚洲视频在线视频| 亚洲激情网站免费观看| 久久久久久久999精品视频| 99国产精品私拍| 在线精品观看| 韩国成人精品a∨在线观看|