?? 0514102801.txt
字號:
化境編程界-
C++ 常用模板武道會(1)
化境編程界首頁| 化境軟件庫 | 化境教程庫 | 其它資源 | 化境討論區
| 化境留言板
showTop();
歡迎訪問《化境編程界》| * Email:5xsoft@21cn.com | < 留言板
化境編程界 -> 技術文章 -> C/C++/VC
C++ 常用模板武道會(1)
[ 作者: beyond_ml
添加時間: 2001-7-5 14:12:30
]
vector v.s. list v.s. deque
原創作者:beyond_ml
Ladies & Gentlemem:
大家好,這里是首屆C++模板武道會的現場,本次武道會由beyond_ml做東,第一場解說員為beyond_ml。由于首次舉辦這樣規模空前的盛會,難免有疏漏之處,還請各位高手不吝賜教。Beyond_ml有理啦。同時也歡迎各位大蝦把此次武道會看做是一個虛基類,不斷繼承,派生出新的比賽。
比賽開始:
首先介紹比武參賽者:
Vector:金山詞霸翻譯成:矢量,向量等,C++容器模板中的大哥大,就像是一個加強版的隊列,之所以這樣說,是因為它不但有隊列形式的索引,還能動態的添加擴充。使用尤其廣泛,并且在許多經典教材中被作為重點介紹。
特點:把被包含的對象以數組的形式存儲,支持索引形式的訪問(這種訪問速度奇快無比)。但由此也產生了一個問題,由于數據存儲形式的固定化,你如果想在他中間部位insert對象的話,搞不好會讓你吃盡苦頭。因為他在分配空間的時候,可是成塊分配的連續空間哦。
Deque:英文“double-ended-queue”。名如其人,這是C++有序容器中聞名遐邇的雙向隊列。他在設計之初,就為從兩端添加和刪除元素做了特殊的優化。同樣也支持隨即訪問,也有類似于vector的[ ]操作符,但大家不要因此就把他和vector混為一潭哦。
特點:從本質上講,他在分配內存的時候,使用了MAP的結構和方法。化整為零,分配了許多小的連續空間,因此,從deque兩端添加、刪除元素是十分方便的。最重要的一點:如果在不知道內存具體需求的時候,使用deque絕對是比vector好的,具體怎么好,比武為證。另外在插一句,不知是不是有意設計,大多數情況下,deque和vector是可以互換使用的。
List:模板中的雙向鏈表。設計他的目的可能就是為了在容器中間插入、刪除吧,所以有得比有失,他的隨機訪問速度可不敢恭維。而且沒有[ ]操作。即便你是為了從前到后的順序訪問,也不見得就能快多少,“愛用不用,反正俺有強項!”List還挺哼,這也難怪,看看他的特點吧。
特點:隨機的插入、刪除元素,在速度上占有明顯的優勢。并且,由于內存分配不連續,他對插入的要求也十分的低。所以在使用大對象的時候,這可是一個不錯的選擇。
“閑言碎語不要講,開打,開打。”
“咚……”
比武正式開始:
第一局:比一比誰的內存管理強。
比試方法:人為引起存儲的對象數據溢出,分別看看系統消耗。系統消耗在這里指:對象構造函數、拷貝函數、析構函數的調用次數。
測試程序如下:
noisy.h …… 包含了測試對象,每次在調用構造、拷貝、析構函數的時候,都會打印相應的提示。
//: C04:Noisy.h
// A class to track various object activities
#ifndef NOISY_H
#define NOISY_H
#include <iostream>
class Noisy
{
static long create, assign, copycons, destroy;
long id;
public:
Noisy() : id(create++)
{
std::cout << "d[" << id << "]";
}
Noisy(const Noisy& rv) : id(rv.id)
{
std::cout << "c[" << id << "]";
copycons++;
}
Noisy& operator=(const Noisy& rv)
{
std::cout << "(" << id << ")=[" <<
rv.id << "]";
id = rv.id;
assign++;
return *this;
}
friend bool
operator<(const Noisy& lv, const Noisy& rv)
{
return lv.id < rv.id;
}
friend bool
operator==(const Noisy& lv, const Noisy& rv)
{
return lv.id == rv.id;
}
~Noisy()
{
std::cout << "~[" << id << "]";
destroy++;
}
friend std::ostream&
operator<<(std::ostream& os, const Noisy& n)
{
return os << n.id;
}
friend class NoisyReport;
};
struct NoisyGen
{
Noisy operator()() { return Noisy(); }
};
// A singleton. Will automatically report the
// statistics as the program terminates:
class NoisyReport
{
static NoisyReport nr;
NoisyReport() {} // Private constructor
public:
~NoisyReport()
{
std::cout << "\n-------------------\n"
<< "Noisy creations: " << Noisy::create
<< "\nCopy-Constructions: "
<< Noisy::copycons
<< "\nAssignments: " << Noisy::assign
<< "\nDestructions: " << Noisy::destroy
<< std::endl;
}
};
// Because of these this file can only be used
// in simple test situations. Move them to a
// .cpp file for more complex programs:
long Noisy::create = 0, Noisy::assign = 0,
Noisy::copycons = 0, Noisy::destroy = 0;
NoisyReport NoisyReport::nr;
#endif // NOISY_H ///:~
目標:插入一千個Noisy對象。
Vector上場
//: C04:VectorOverflow.cpp
// Shows the copy-construction and destruction
// That occurs when a vector must reallocate
// (It maintains a linear array of elements)
#include "noisy.h"
#include <vector>
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
int main(int argc, char* argv[])
{
int size = 1000;
if(argc >= 2) size = atoi(argv[1]);
vector<Noisy> vn;
Noisy n;
下一頁 8
相關內容:
- 概觀C++程序設計語言
- C++學習要點
- C++實戰之數據抽象
- UNIX環境下的日期程序
- 深析C++析構函數
showBottom();
申明: 本站
所有內容均是從網上收集,若有侵范你版權的請指出,本站馬上刪除。
© Copyright By 稻香老農 2000.3 - Now | 站務聯系: 5xsoft@21cn.com | OICQ:593737 (只用于站務聯系,不做它用)
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一二三区不卡|
eeuss鲁片一区二区三区|
亚洲福利视频一区二区|
三级亚洲高清视频|
激情综合色丁香一区二区|
粉嫩av一区二区三区在线播放|
99久久国产免费看|
欧美精品视频www在线观看|
久久综合九色综合97婷婷|
中文子幕无线码一区tr|
国产精品久久久久久久久久久免费看
|
亚洲高清免费一级二级三级|
激情欧美一区二区|
成人精品视频.|
91精选在线观看|
国产欧美日韩另类视频免费观看|
亚洲一线二线三线久久久|
麻豆精品视频在线观看视频|
久久狠狠亚洲综合|
在线观看亚洲精品视频|
国产女同互慰高潮91漫画|
免费在线看一区|
国产91综合网|
日韩午夜激情视频|
一区二区三区成人|
成人av动漫在线|
久久精品一区二区三区不卡牛牛|
欧美国产视频在线|
国产一区二区影院|
91精品国产日韩91久久久久久|
国产精品白丝在线|
日本不卡1234视频|
欧美精品自拍偷拍|
亚洲乱码国产乱码精品精98午夜|
国产精品白丝jk白祙喷水网站
|
成人性色生活片免费看爆迷你毛片|
欧美日韩一区二区三区四区|
亚洲日本va午夜在线电影|
国产精品一区在线观看乱码|
一本色道综合亚洲|
国产精品欧美久久久久一区二区|
极品尤物av久久免费看|
91精品综合久久久久久|
午夜精品福利视频网站|
在线观看日产精品|
亚洲在线一区二区三区|
一本色道久久综合狠狠躁的推荐|
欧美激情一区三区|
国产精品1区二区.|
久久久久久99久久久精品网站|
美日韩一区二区|
欧美日韩精品一区二区三区四区|
亚洲精选免费视频|
91高清视频免费看|
亚洲综合色丁香婷婷六月图片|
91视频你懂的|
亚洲一区二区成人在线观看|
一本大道综合伊人精品热热|
国产精品久久久久永久免费观看
|
亚洲成人免费看|
欧美日本精品一区二区三区|
亚洲一本大道在线|
欧美日韩一区二区在线观看视频|
五月综合激情网|
欧美一区二区三区电影|
久久99国内精品|
国产亚洲综合在线|
99在线视频精品|
亚洲一区二区三区四区在线|
欧美日韩视频在线观看一区二区三区|
樱花影视一区二区|
91精品国产综合久久小美女|
久久精品99国产精品日本|
精品国产乱码91久久久久久网站|
波多野结衣欧美|
麻豆视频一区二区|
亚洲精品欧美专区|
久久亚洲免费视频|
欧美日韩一区成人|
caoporm超碰国产精品|
美女在线视频一区|
一区二区三区不卡视频
|
国内国产精品久久|
亚洲国产综合人成综合网站|
久久久噜噜噜久久中文字幕色伊伊|
91黄色激情网站|
成人精品国产免费网站|
男男gaygay亚洲|
尤物av一区二区|
国产精品三级电影|
精品国产乱码久久|
欧美日韩成人一区二区|
91免费国产在线观看|
国产成人免费在线观看不卡|
麻豆一区二区三|
婷婷成人激情在线网|
亚洲精品欧美在线|
中文乱码免费一区二区|
精品电影一区二区|
日韩一区二区精品|
欧美电影一区二区|
欧美色精品在线视频|
色就色 综合激情|
波多野结衣亚洲|
成人午夜碰碰视频|
国产.欧美.日韩|
国产a区久久久|
国产白丝网站精品污在线入口|
久久国产麻豆精品|
韩国精品久久久|
狠狠色综合色综合网络|
免费不卡在线视频|
久久精品99国产国产精|
蜜桃91丨九色丨蝌蚪91桃色|
天天影视色香欲综合网老头|
午夜激情久久久|
五月天中文字幕一区二区|
亚洲丰满少妇videoshd|
午夜不卡av免费|
日本最新不卡在线|
久久超碰97人人做人人爱|
久久精品国产秦先生|
精品在线观看免费|
国产一区日韩二区欧美三区|
国产一区二区调教|
紧缚奴在线一区二区三区|
国产伦精品一区二区三区免费|
国产中文一区二区三区|
成人福利视频在线|
色播五月激情综合网|
欧亚一区二区三区|
欧美肥妇bbw|
久久久久综合网|
亚洲人妖av一区二区|
亚洲一二三级电影|
久久精品国产网站|
成人三级在线视频|
欧美在线制服丝袜|
日韩三区在线观看|
久久久久久综合|
依依成人综合视频|
久久电影网站中文字幕|
成人免费视频app|
欧美网站一区二区|
精品国产一区久久|
国产精品久久久久婷婷二区次|
亚洲美女偷拍久久|
日本亚洲电影天堂|
99亚偷拍自图区亚洲|
欧美日韩成人综合在线一区二区|
精品国产乱码久久久久久浪潮|
欧美国产日产图区|
五月天久久比比资源色|
国产成人亚洲综合色影视|
欧美日韩一卡二卡三卡|
久久精品欧美一区二区三区不卡|
亚洲欧美色图小说|
激情国产一区二区|
欧美性色aⅴ视频一区日韩精品|
日韩欧美一二三四区|
亚洲人xxxx|
国产一区二区三区精品视频|
91久久精品一区二区二区|
欧美草草影院在线视频|
亚洲精品免费在线|
97国产一区二区|
日韩视频一区二区在线观看|
亚洲视频 欧洲视频|
黄页视频在线91|
在线不卡a资源高清|
亚洲欧洲在线观看av|
激情偷乱视频一区二区三区|
欧美三级日本三级少妇99|
中文字幕第一页久久|
狠狠色综合色综合网络|
欧美三电影在线|
国产精品久久二区二区|
激情文学综合插|
欧美一区二区视频在线观看|
亚洲精选视频免费看|
成人av午夜影院|
欧美mv日韩mv国产网站app|
亚洲成人午夜影院|
日本韩国欧美一区二区三区|
国产日韩亚洲欧美综合|
免费观看30秒视频久久|
欧美精品在线观看播放|
亚洲影视资源网|
欧美综合视频在线观看|
中文字幕综合网|
波多野洁衣一区|
中文字幕日韩一区|
国产.精品.日韩.另类.中文.在线.播放|
日韩精品一区二区三区四区|
日韩高清不卡一区二区三区|
欧美性感一类影片在线播放|
自拍视频在线观看一区二区|
成人午夜电影网站|
日本一区二区三区dvd视频在线|
国产美女精品人人做人人爽
|