タグ

c++11に関するsyohexのブックマーク (6)

  • これからC++11を学ぶ君に。生ポとおさらば unique_ptr編 - Qiita

    void hoge(){ char *p = new char[100]; // ここで例外発生したら pはリークしますよ! delete p; } よくある、みつけにくいメモリリークですよね。 ちゃんと try/catch でかこみ finalizeで解放し、例外をthrowし直さないとダメですね 面倒だし、無駄な例外処理が必要になり速度的にも あれですよね。 まずは auto_ptr STLにはauto_ptrというものがあり、スマートポインタとして使われてましたが auto_ptrは deprecated (非推奨、削除予定)なので、 unique_ptr を使いましょう unique_ptrは、昔 boost::scoped_ptrって呼ばれてたやつですね。 ってことで、auto_ptr がダメな理由 #include <iostream> #include <string> #i

    これからC++11を学ぶ君に。生ポとおさらば unique_ptr編 - Qiita
  • 『Effective Modern C++』勉強会まとめ - Cybozu Inside Out | サイボウズエンジニアのブログ

    サイボウズ・ラボの光成です。 今年の1月から『Effective Modern C++』(Scott Meyers)の読書会を社外の人を含めて月1回のペースで始め、先月末に無事最後まで終わりました。 その感想をざっと紹介いたします。 『Effective Modern C++』(以下EMCと略)はC++11/C++14で追加された様々な新しい機能について紹介するです。 従って、C++の全くの初心者が読むには少々難しいと思います。以前のC++にある程度習熟した人が、新機能の注意点を勉強したいというときに使うとよいでしょう。 には重要な間違いもいくつか指摘されていますので正誤表の確認はしておきましょう。 なおこの9月には日語版(千住治郎訳)も登場しています。こちらは7月時点で原書に見つかっている正誤表が反映されていてうれしいですね。 C++11ではautoの型推論、typedefより高機

    『Effective Modern C++』勉強会まとめ - Cybozu Inside Out | サイボウズエンジニアのブログ
  • C++の正規表現ライブラリ: std::regex

    いまさらながら、C++の正規表現ライブラリを調べている。 C++の正規表現ライブラリ、std::regexは、boost::regexを土台に設計されている。boost::regexの正規表現の文法は、perlなのに対し、std::regexは、ECMAScriptである。この理由は、しっかりと正規表現の文法が定義されていて、外部規格として参照できる品質のものが、perlには存在しないためだ。std::regexはposixと拡張posixとawkとgrepとegrepの正規表現にも対応している。 記事では、ECMAScriptの正規表現を使う。また、参考のためのECMAScriptのコードも使う。 全体一致 文字列全体が正規表現に一致するかどうかを調べたいとする var re = /1234/ ; var text = "1234" ; var result = re.test( te

  • 右辺値参照とムーブコンストラクタの使い方 - C++ プログラミング

    C++ ではお馴染みの代入演算子ですけど、通常は、左辺の値を右辺の値で置き換えるという動作をします。 従来からの C++ のクラスの代入演算子では、左辺のクラスが右辺の値を受け取って処理をするような定義になっています。 右辺の値は書き換えられないので、たとえば右辺の値を左辺が引き継いで使用するとき、右辺の値がポインタだったりする場合には、大抵はどんなときでも、右辺の値を新しい値としてまるごと複製しなければいけなくなります。 このとき、もしもそのまま右辺のポインタを左辺に設定してしまうと、左辺と右辺の両方で同じポインタを使ってしまうため、たとえば左辺と右辺のどちらかが解放されるときに、もう片方でも使用中のポインタが示すメモリを開放してしまう恐れがあります。 そのため、ポインタが指す先のメモリを丸ごとコピーして新しい値として設定する必要があるのですが、それにかかるコストが大きい場合に問題になる

    syohex
    syohex 2015/01/07
    同様に、関数が return で返す変数も、それが関数内で定義されたクラスだった場合にはそれ以降使われることはないので、std::move 関数を使わなくても、コンパイラが自動的に右辺値参照として扱ってくれます
  • 本の虫: rvalue reference 完全解説

    目的 この記事は、C++0xのrvalue referenceを完全に解説せんとする目的を以て書かれた。サンプルコードは最小に留め、エラー処理等は省いた。この記事さえ読めば、今日からrvalue referenceを恐れることなく使う物のC++0xプログラマになれるだろう。 lvalueとrvalueについて Cの時代では、lvalueとrvalueの違いは、代入演算子の左側か右側かという違いだけであった。つまり、left hand value, right hand valueの略である。従って、訳語も、左辺値、右辺値であった。C++においては、これはもはや正しくはない。従って、右辺値、左辺値というのも、誤訳である。それ故に、ここでは、これ以上、左辺値、右辺値という名称を使用しない。 誤解を恐れずにいえば、lvalueとは、明示的に実体のある、名前付きのオブジェクトであり、rvalue

    syohex
    syohex 2015/01/07
    rvalue reference
  • Elements of Modern C++ Style

    C++11 feels like a new language.” – Bjarne Stroustrup The C++11 standard offers many useful new features. This page focuses specifically and only on those features that make C++11 really feel like a new language compared to C++98, because: They change the styles and idioms you’ll use when writing C++ code, often including the way you’ll design C++ libraries. For example, you’ll see more smart poi

    Elements of Modern C++ Style
  • 1