C++C++2017-10-26unique_ptrC++unique_ptrは、C++11で導入されたスマートポインタの一種で、とあるunique_ptrが指すリソースの所有権は1つのポインタしか持つことができない(現在はそのunique_ptrのみが持つ)という特徴がある。C++日本語リファレンスtest.hで、test...unique_ptr2017-10-25ノンタイプテンプレートパラメータC++本来、型を指定するのが、テンプレートのパラメータ部分だが、型以外のモノを指定することもできる。第22章array.hで、array_の型はTになっていて、テンプレートパラメータで型を指定する...ノンタイプテンプレートパラメータ2017-10-24decltypeC++decltypeを使うと、指定された式の型を取得することができる。C++日本語リファレンスdecltypeで取得した型で変数宣言など、一般の型と同じように使える。前回の、後置戻り値型に使ったり、変数宣言に使ったり、参照も判断できる。...decltype2017-10-23後置戻り値型C++C++11から、関数の定義において、戻り値型を引数リストの後に置くことができるようになった。C++日本語リファレンス簡単な例を示す。このように、本来戻り値型がある場所にはautoを置き、引数リストのあと、"->...後置戻り値型2017-10-22forwardC++ユニヴァーサル参照の引数を持つ関数内で、その引数を別の関数に渡すときにmoveしてしまうと、ユニヴァーサル参照が左辺値だった場合に困る場合がある。cppr...forward2017-10-21ムーブ代入演算子C++前回、オブジェクトの初期化で右辺値を指定し、ムーブコンストラクタが実行された。オブジェクトの代入で右辺値を指定された場合は、ムーブ代入演算子が実行される。C++日本語リファレンスprofile.hで、このよ...ムーブ代入演算子2017-10-20ムーブコンストラクタC++引数に右辺値参照を取るコンストラクタ「ムーブコンストラクタ」を定義できる。C++日本語リファレンスprofile.hに、こんな感じでムーブコンストラクタを宣言。profile.cppは、引数のobjのメンバのポインタに挿...ムーブコンストラクタ2017-10-19nullptrC++C++11からは、ポインタへのNULLのセットは、nullptrを使うことが推奨されている。*を引数とするfuncがある。値、指定された文字列をそれぞれ出力するだけ。func...nullptr2017-05-11構造体C++C++にも構造体があるが、クラスとの違いで代表的なのは、クラスのデフォルトのメンバアクセスがprivateなのに対し、構造体のデフォルトのメンバアクセスがpublicであること・・・。struct_test.hで、アクセス指定子を付けずにメンバを用意・・・。t"という引数の型を見ると、右辺値参照っぽいのになぜ左辺値も引数に取れるのか不思議に思う・・・。実は、テンプレート関数など、T&&での推論が発生する状況においては、右...ユニヴァーサル参照2017-03-07move(utility)C++代入は、実質的にはオブジェクトのコピーである・・・。上のような場合にobjやfunc()の戻り値がint型ならまだしも、これが大きなクラスオブジェクトのコピーとな...move(utility)2017-03-06右辺値参照C++C++11では、右辺に置かれる定数リテラルや文字列リテラル、オブジェクトのコンストラクタや関数などは、右辺値と呼ぶ・・・。左辺に置かれる変数やオブジェクト、ポインタなどは左辺値と呼ぶ・・・。C++03以前では単に「参照」と呼ばれていた...右辺値参照2017-03-05代入演算子のオーバーロードC++コピーコンストラクタの項で、「オブジェクトの代入は、コピーではあるがコピーコンストラクタの対象外で、この場合コピー代入演算子のオーバーロードが必要」ということを書いた・・・。このオブジェクトの代入の場合も、アドレスのコピーをしないようにコ...代入演算子のオーバーロード2016-09-15autoC++C++11では、型名の代わりにautoを使うことで、初期化時に初期値を基準に型推論して型を決定することができる・・・。そのautoの前に、test.hにclass_testを定義・・・。x_というメンバを持ち、値をセットしたり、取得したり、出力したりするだけ・・・。...auto2016-09-14auto_ptrC++C++には、ガベージコレクションがないので、newで確保したメモリはdeleteで解放しなければならない・・・。大きなプログラムになるとdeleteし忘れることもあるだろう・・・。そのような場合に備えて、C++ではスマートポインタなるものがある・・・...auto_ptr2016-09-12for_eachC++for_eachは、C++標準ライブラリのSTLアルゴリズムのひとつで、指定されたコレクション(配列やベクタ、リストなど)の各要素ごとに指定された関数オブジェクトを実行するテンプレート関数・・・。ReferenceSTLにおけるアルゴリズムは、本来のア...for_each2016-09-11plusC++plusは、C++標準ライブラリの標準関数オブジェクトのひとつで、加算を行う関数オブジェクト・・・。Referenceベクターvec1とベクターvec2の要素を足して、その値をベクターvec3に追加、というのを繰り返してみる・・・。C++の標準関数オブジェク...plus2016-09-10関数オブジェクトC++関数オブジェクトは、括弧付で呼び出すことで、関数の様に振る舞うことができるオブジェクト・・・。いっても、コンストラクタも括弧付で呼び出す場合があるので、何が違うのかとおもうだろう・・・。Out)なスタックとして使うようにしたもの・・・。Referencestackは、追加は先頭からしかできない・・・。Out)なキュー(待ち行列)として使うようにしたもの・・・。Referenceコンテナを内包し、操作を制限することで、特殊なコンテナと...queue2016-09-07mapC++mapは、C++標準ライブラリのSTL(標準テンプレートライブラリ)のひとつで、マップ(連想配列)クラス・・・。Referenceテンプレート引数にキーの型と値の型を指定して、オブジェクトを作成・・・。オブジェクトにpair形式で要素を挿入していく・・・...map2016-09-06pairC++pairは、C++標準ライブラリのユーティリティクラスで、2つの値を1つの組(ペア)として扱うクラス・・・。Referenceテンプレート引数で、2つの型を指定する・・・。後述するmapなどに要素を挿入するときに使うことがほとんど・・・。utilityをイン...pair2016-09-05setC++setは、C++標準ライブラリのSTL(標準テンプレートライブラリ)のひとつで、集合クラス・・・。Reference順序付き(ソート済)の集合で、値を要素として挿入すると、既定のソート規則にしたがってソートされる・・・。参照する場合は、何番目などの指...set2016-09-04dequeC++dequeは、C++標準ライブラリのSTL(標準テンプレートライブラリ)のひとつで、両端キューテンプレートクラス・・・。Reference前後への要素の追加ができる待ち行列で、listのように先頭・末尾から追加や削除ができ、vectorのように添字演算子で要...deque2016-09-03listC++listは、C++標準ライブラリのSTL(標準テンプレートライブラリ)のひとつで、双方向リストテンプレートクラス・・・。Referencelistをインクルード・・・。std::listでint型list・・・。std::list::iteratorでint型list用のイテレータ・・・。双方...list2016-09-02iteratorC++vectorなどの複数の要素を持つクラスをコンテナと呼び、このコンテナの要素を繰り返し取り出すための概念としてイテレータ(反復子)というのがある・・・。Referenceイテレータを使って要素を参照(取得)してみる・・・。iteratorはvectorでイ...iterator2016-09-01vectorC++vectorは、C++標準ライブラリのSTL(標準テンプレートライブラリ)のひとつで、動的配列テンプレートクラス・・・。Referencevectorをインクルード・・・。テンプレート引数には要素の型を指定・・・。要素がint型のベクタvecを作成・・・。push_...vector2016-08-31bitsetC++bitsetは、C++標準ライブラリのビット集合クラス・・・。Referenceこれを使うと、より簡単にビット列の表現や操作ができる・・・。bitsetをインクルードする必要がある・・・。テンプレート引数には要素数を指定する・・・。8ビットのビット列...bitset2016-08-30using宣言C++using指令で名前空間を可視化することができたが、複数の名前空間を可視化すると、結局は他の名前空間のものと重複してしまう本末転倒なことが起きる・・・。using指令では、ブロック内でその名前空間を持つすべての変数、関数、クラスから名前空間を省略で...using宣言2016-08-29using指令C++namespaceを使って、同じクラス名や同じ関数名や同じ変数名でも、別のものとして分けて認識できるようになった・・・。いったクラスや関数、変数がいくつも出てきた場合、いちいち名前空間を付けるのが面倒な場合がある・・・。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。