タグ

ブックマーク / torini.hateblo.jp (2)

  • std::vectorの正しい使い方 - ぷろみん

    イテレータ無効化ルール イテレータは容易に無効化されます。 Iterator Invalidation Rules (C++0x) 例えばvectorはコンテナサイズよりも要素が増えた場合、要素が取り除かれた場合にイテレータは無効化されます。 なので、基的にイテレータが無効化される操作とされない操作を明確に分離して考える事で危険を減らすと良いと思います。 const性とイテレータ無効化ルール const vectorは一切の変更を認めませんが、イテレータ無効化ルールは要素の増減が無ければ変更を許します。 const vectorは変更をコンパイルエラーにしてくれますが、イテレータ無効化ルールは要素の増減に対してエラーを出してくれません。 そこで、イテレータ無効化を避ける方法としてSTLのalgorithmを使います。 algorithmは明示的に破壊しなければイテレーション中にイテレータ

    std::vectorの正しい使い方 - ぷろみん
  • シングルトンを使うのはやめよう - ぷろみん

    概要 この記事はC++の作者Bjarne Stroustrup等によって書かれたコーディングガイドラインのAvoid singletonsの箇所の翻訳です。 https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Ri-singleton シングルトンを使うのはやめよう 理由 シングルトンは基的に変装したグローバルオブジェクトに過ぎないため。 例 class Singleton { // シングルトンオブジェクトが確実に1つだけ作られて // プロパティの初期化が行われるようにする }; シングルトンという発想には多くの亜種がある。 それが問題の1つである。 メモ あなたがグローバルオブジェクトを変更したくない場合、constまたはconstexprを宣言する。 例外 最初の使用での初期化を

    シングルトンを使うのはやめよう - ぷろみん
    babydaemons
    babydaemons 2016/10/27
    超賛成!"シングルトンを使うのはやめよう 理由 シングルトンは基本的に変装したグローバルオブジェクトに過ぎないため"
  • 1