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

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>
            午夜精品福利在线| 欧美激情综合五月色丁香小说| 欧美在线视频不卡| 在线亚洲精品| 一区二区三区www| 亚洲无限av看| 亚洲欧美精品在线观看| 亚洲一区二区三区在线看| 亚洲一区精彩视频| 香蕉视频成人在线观看| 久久精品亚洲一区二区| 欧美在线综合| 免费影视亚洲| 亚洲人成网站精品片在线观看| 亚洲高清久久| 亚洲午夜免费福利视频| 亚洲综合电影| 久久精品一区二区三区四区| 欧美.com| 一本久道综合久久精品| 篠田优中文在线播放第一区| 久久久91精品国产一区二区精品| 免费观看一区| 国产精品永久免费视频| 伊人精品视频| 日韩视频在线观看| 久久大综合网| 亚洲国产天堂久久国产91| 91久久国产综合久久| 亚洲网站视频| 久久综合综合久久综合| 国产精品二区二区三区| 在线免费观看日韩欧美| 在线一区二区日韩| 久久美女艺术照精彩视频福利播放| 亚洲二区视频| 欧美一区二区三区四区在线观看| 免费观看不卡av| 国产伦精品一区二区三区免费| 亚洲激情在线视频| 亚洲综合第一| 久久精品99| 夜夜嗨av一区二区三区中文字幕 | 在线亚洲国产精品网站| 久久久精品2019中文字幕神马| 欧美久久久久久| 影音先锋另类| 久久精品国产亚洲a| 日韩亚洲国产精品| 欧美成人a视频| 亚洲成色777777在线观看影院| 午夜欧美大尺度福利影院在线看| 亚洲日本va午夜在线电影| 久久久99久久精品女同性| 国产精品欧美风情| a4yy欧美一区二区三区| 欧美成人午夜视频| 久久精品国产第一区二区三区| 国产精品久久久久久久久久三级| 亚洲精品国产欧美| 欧美 日韩 国产精品免费观看| 久久国产视频网站| 国产精品美女久久| 韩日在线一区| 久久国产一区| 亚洲免费在线精品一区| 欧美三日本三级少妇三99| 日韩视频在线免费| 亚洲精品欧美精品| 欧美激情一区二区三区蜜桃视频| 91久久夜色精品国产网站| 亚洲第一精品影视| 麻豆精品在线视频| 亚洲精品影视| 99国产精品久久久久久久久久| 欧美日韩免费一区二区三区视频| 这里只有精品视频| 亚洲视频在线视频| 国产日韩在线视频| 免费看亚洲片| 欧美精品一区二区三区视频| 日韩一级网站| 一区二区三区产品免费精品久久75| 欧美日韩三级电影在线| 亚洲午夜一区二区三区| 亚洲在线中文字幕| 一区二区三区在线视频观看| 猫咪成人在线观看| 鲁大师影院一区二区三区| 亚洲精品一二区| 在线综合欧美| 精品成人在线视频| 国产精品扒开腿做爽爽爽视频| 久久精品99国产精品| 在线看国产一区| 亚洲乱码久久| 国产人妖伪娘一区91| 欧美成年网站| 国产精品色网| 欧美成人69av| 国产精品主播| 欧美岛国在线观看| 国产精品丝袜xxxxxxx| 久久乐国产精品| 欧美四级在线观看| 久久综合伊人77777麻豆| 欧美日韩一区三区| 免费的成人av| 国产精品美女久久久| 亚洲高清电影| 国产欧美一区二区三区在线看蜜臀| 欧美高清一区二区| 国产精品人人做人人爽| 亚洲国产精品欧美一二99| 国产午夜精品在线观看| 亚洲精品免费在线播放| 在线观看国产成人av片| 亚洲欧美国产另类| 一区二区国产日产| 免费久久精品视频| 久久野战av| 国产欧美激情| 中文在线资源观看网站视频免费不卡 | 亚洲影院色在线观看免费| 亚洲欧美日韩天堂| 夜夜夜久久久| 欧美v日韩v国产v| 久久免费少妇高潮久久精品99| 欧美色图一区二区三区| 欧美国产精品日韩| 极品日韩av| 久久九九久久九九| 欧美在线视频一区二区三区| 国产精品mv在线观看| 亚洲精品美女久久久久| 亚洲欧洲另类| 欧美成人免费观看| 欧美成人性网| 亚洲黄色av一区| 免费观看日韩| 亚洲福利电影| 亚洲美女黄网| 欧美日本不卡高清| 99精品99久久久久久宅男| 一本久道久久久| 国产精品电影网站| 亚洲欧美久久久| 久久精品综合网| 激情自拍一区| 免费在线观看日韩欧美| 欧美寡妇偷汉性猛交| 亚洲日本欧美| 欧美日韩影院| 午夜视频一区在线观看| 久久中文字幕导航| 欧美黄色成人网| 欧美中文字幕在线观看| 久久夜色精品一区| 亚洲缚视频在线观看| 欧美精品18| 亚洲欧美国产精品桃花| 久久午夜精品一区二区| 亚洲欧洲综合| 国产精品久久久久久久久久免费看| 亚洲女人av| 欧美电影在线播放| 亚洲一级二级在线| 狠狠色狠狠色综合日日五| 欧美韩国在线| 性色av一区二区怡红| 欧美风情在线观看| 亚洲综合电影一区二区三区| 一区二区三区亚洲| 欧美色大人视频| 久久久亚洲高清| 一区二区精品在线| 麻豆精品一区二区av白丝在线| 一区二区三区高清| 国产综合在线视频| 欧美日韩黄视频| 久久久久久久久久久久久女国产乱 | 欧美视频在线观看一区| 欧美专区福利在线| 久久不射中文字幕| 亚洲精品视频免费| 国产日韩一区| 欧美午夜精彩| 欧美激情第4页| 久久成人国产| 一二三区精品| 欧美激情一区二区在线| 午夜一区在线| 一区二区三区久久精品| 影音先锋亚洲精品| 国产精品一区二区你懂的| 欧美激情在线观看| 久久艳片www.17c.com| 性欧美xxxx视频在线观看| 亚洲精品自在在线观看| 免费日韩成人|