kwkbtr’s log

Skip to main content | 本文へ

(Last modified on Tue, 26 Jun 2012 00:16 JST)

Tue, 26 Jun 2012

std::mapに要素を加える時の話 Clip to Evernote

例えばstd::map<int, a>に要素を加える時、

std::map<int, a> hoge;
hoge.insert(std::pair<int, a>(0, a()));

とやると、クラスaのコンストラクタは何回走るか?思いつくところで

  1. pairのコンストラクタの引数のコンストラクタ
  2. pairのメンバ変数のコピーコンストラクタ
  3. mapのメンバ変数のコピーコンストラクタ

の3回あるが(他にあったら教えてください)、実際にやってみると4回とか5回実行されたりする。じゃあ

hoge[0]

ならどうかというと、clang++ -stdlib=libstdc++でコンパイルすると3回走るんだけど、clang++ -stdlib=libc++でコンパイルすると1回だけしか走らない!libc++賢いね!!というお話でした。

Tags , | Comments on this entry

blog comments powered by Disqus

© 2009 KAWAKUBO Toru <web (atmark) kwkbtr.info>

Archives

2013‑Mar 2012‑Jun 2011‑Jul 2010‑Nov 2010‑Oct 2010‑Sep 2010‑Mar 2010‑Jan 2009‑Dec 2009‑Oct 2009‑Sep 2009‑Aug

Latest entries RSS 2.0 Atom 1.0 My tweets | kwkbtr.info Entries in English

See also: Twitter Facebook Flickr Delicious FriendFeed (feeding “kwkbtr’s log,” Twitter, Flickr, Delicious and Last.fm) Nike+ Mendeley Last.fm Tumblr

kwkbtrの早起き生活グラフ Powered by 早起き生活

Made with PyBlosxom