*はじめに [#q51840fc] #contents このページではプログラミングのちょいテクについて掲載しています。 現在掲載している他にも注意しておきたい点がありましたらどんどん編集していってください。 *クラスの設計について [#kb8d32e1] **必ず気をつけること [#u6412e53] - 継承されることを前提としたクラスでは「必ずデストラクタをvirtualにすること」 *文字列について [#y5923ee7] **stringから数値型への変換 [#gd380f3b] - 文字列から数値型への変換には、整数型なら atoi()、実数型なら atof()を使うとよいが、これらはC標準関数なので引数として const char * を取る。string型の文字列を数値型に変換したい場合は string::c_str()を使って得た const char * を引数に渡すようにする。 std::string piStr = "3.14"; double piValue; // piValue = atof(piStr.c_str()); string::c_str()で得たポインタはその場のみで参照すること。ポインタを保持して使い回すと、ポインタを取得してからstringのインスタンスが消滅したり、内容が変更された際には無効なポインタになる。 string::c_str()で得たポインタはその場で参照すること。ポインタを保持して使い回すと、ポインタを取得してからstringのインスタンスが消滅したり、内容が変更された際には無効なポインタになる。 *vector配列について [#c906ccfa] vector配列とは〜とのこと。 vector配列とは「可変長配列」のことであり、C++ではSTLによって提供されているコンテナの一種である。作成時に大きさを確定させる必要がなく、好きなタイミングで好きなサイズに変更したり、末尾に新たな要素を付け足していくこともできる。砕けた言い方をするなら「すごい配列」であり、それ以外の扱いは通常の配列とほぼ同様である。 詳細は[[勉強会資料:http://www.teu.ac.jp/aqua/GS/text/PDF/Container.pdf]]を参照すること。 **お得メモ [#jbb6c159] - メンバ関数の呼び出しは少々コストがかかるため、繰り返し処理で呼び出すのはできるだけ避けたい。 - for文の条件式は毎ループ評価されるため、条件にsize()を直接使用すると処理時間がかかる。 for(int i=0; i<hoge.size(); i++) { 〜; } とするよりも、 int hogeSize = hoge.size(); for(int i=0; i<hogeSize; i++) { 〜; } の方が好ましい。 ~ ~ ~ ~