はじめに
この記事は,悪い人にそそのかされてC++を初めてしまった先輩方のために書いています.
C++,C++11,STLの機能の中から,お手軽に使えて便利なものをピックアップして紹介しようと思います.
少しでも興味がある人がC++を始めてもらえれば僕としては嬉しいです.
過去記事に似たようなエントリがあるので,こちらも見てみてください.
e2studioを用いてGCC-C-で開発する
お決まり文句ですが,この記事の内容には誤りがある可能性があります.その際ご指摘をいただければ幸いです.
また,僕は割と適当にC++の勉強をしているので,そのあたりお気をつけください.この記事ではほんの一部の機能紹介にとどめているため,よく研究してから使われることをオススメします.
STL
STLとはStandard Template Libraryの略で,C++で用意されている標準ライブラリのことです.とても便利なライブラリなのでふんだんに使っていきたいですね.
ただし,コードサイズが大きくなるため組み込みで使用する際はよく考えてください.僕のマウスはSTL使いまくっていますが今の所問題なく動いています.
ではいきましょう.
std::pair
例えば座標管理を考えるときに,次のような変数を用意すると思います.
1 | int current_x = 0; |
しかし,迷路座標はxとyはペアで考えるべきです.
というわけで,STLのpairを使って定義しましょう.
1 | std::pair<int, int> current_pos(0, 1); |
std::array
どんなプログラムでも,配列変数をたくさん使っていると思います.次のコードはよくあるミス.
1 | int arr[16]; |
というわけで,ここでもSTLを使っていきましょう.
1 | std::array<int, 16> arr; |
std::vector
きました,可変長配列です!
サイズの変えられる配列を使えます.
1 | std::vector<int> vec = {1, 2, 3}; |
少し話がずれますが,std::array
やstd::vector
などのすべての要素にアクセスしたい場合,次のような方法があります.
1 | for(int x : vec){ |
std::queue
キューを自前で作っている人や,歩数マップ生成ルーチンとキューが一体型になっている人がいらっしゃるようですが,ここでもSTLを使いましょう.
1 | std::queue<int> que; |
std::bitset
頑張ってビット演算をしていろいろなデータを格納しているかもしれませんが,ここでもSTLを使います.
1 | std::bitset<8> bs; //0b0000 |
C++
auto
ちょっと使いたいだけのときに一々型を調べるの,面倒じゃないですか? そんなときには楽をしちゃいましょう.
1 | for(auto x : vec){ |
enum class
使い勝手の良い列挙型です.
1 | enum class N : uint8_t{ |
cast
キャストにも幾つか種類がありますが,一番良く使うのはこのキャストです.できるだけ明示するようにしましょう.
1 | int a = 10; |
参照渡し
C言語でアドレスを渡す際にはポインタしかありませんでした.
1 | struct foo{ |
正直いろいろと面倒くさい,そんなときはC++の参照渡しです.const
も付けられます.
1 | struct foo{ |
constexpr
配列のサイズを指定するには,定数かマクロを使うしかありませんでした.
1 |
|
このサイズがコンパイル時に確定する場合(ex.他のパラメータから配列サイズが決まる場合),どうすればいいでしょうか?
C++11ならconstexprを使いましょう.
1 | constexpr int size1 = 10; |
おわり
第一弾おわり!
(つづくの!?)