' P '

whatever I will forget

C++

C++ ポインタの初期化、Dereference等

C++

初期化 C++ 11からは、nullptrが使える。 int *ptr {nullptr}; 上記の場合は、ポインタはどこのアドレスもポイント(参照)していません。 まあ、ポインタはとりあえず絶対初期化しましょうねって感じです。 (ゴミデータが厄介になるため) int test {100};…

Global変数、Local変数、static変数

C++

Global変数 プログラム内のどこからであっても参照できる変数。 いくつかの関数で同じグローバル変数が使用され、値が変更されたとしたら、前回に値を変更した値が保持される。 Local変数 {}で囲まれた範囲内のみで使用可能な変数。 {}の外から呼び出しても…

C++ 関数に渡す値が大きくなる場合は値を渡すのではなく、referenceを渡す

C++

いわゆるpass by valueとpass by reference。 pass by valueだと、関数がcallされたときに、値をそのままコピーしてしまう、ということはコピーされた変数にも空間が作られる。 pass by referenceだと、値をコピーせず、アドレスを参照にしにいく。 そのため…

C++ 関数に配列を渡したい場合

C++

関数に配列を渡したい場合は、配列変数と共に、配列サイズも渡してあげること!!! (関数はその配列変数が何この要素を持っているのか知らないため) また、print系の関数でarrayの値が変わるはずがない場合には、ちゃんと"const"をarray変数の前に定義す…

C++ 関数定義

C++

なんか微妙に覚えられないので備忘録 C++では関数を使うときに 1. プロトタイプ関数の宣言 2. 作った関数をcallするmain関数 3. 作った関数のロジック定義 でやっていこうとしているのだが、定義時にいつもしょうもないエラーを発生させてしまう・・・ 1. プ…

C++ 関数からreturnされる引数の値で変数を初期化するとき

C++

アホみたいなコードを書いていたので備忘録 double C = F_to_C(F_temp); C変数を宣言しつつF_to_C関数の返り値で初期化したかった。 F_to_C(F_temp); double C = F_temp; こんな二行も使うコードは書いたらダメよって話 Returnだけで関数呼び出し元の変数の…

C++ cmathライブラリ

C++

これは特に説明しなくても、レファレンスを参照するの方が早い http://www.cplusplus.com/reference/cmath/ ただ小数点の丸のところは仕事でも使いそうな予感がするので一応メモ round = 一番近い値に丸める e.g. 14.2 だと14 ceil = 最小の整数値に丸める e…

C++ find関数を使うときの注意点

C++

findを使うときは、size_t型を使おうねって話と、string::nposも必需品って話 サンプルコード #include <iostream> #include <string> using namespace std; int main() { string alpha {"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"}; string key {"XHAGSJSKCUENC</string></iostream>…

C++ Strings 宣言と初期化、使い方など

C++

うおおお C++スタイルだとこんなことができるなんて全く知りませんでした! C言語スタイルに慣れすぎてていやだ。 まず初めに C++ Stringsを使う場合は、 #include <string> using namespace std; 上記がincludeされていることが条件 代表的な宣言と初期化 string s1</string>…

C++ C Type Character

C++

C++にはC言語スタイルのcharと、C++スタイルのcharがある。 C言語スタイルの場合は、基本的にcharに最後null terminateがされてることが条件となる。 Character Functions #include <cctype> をincludeすれば、charを変換するfucntionが使用できるようになる。 例え</cctype>…

C++ While と Do While の違い

C++

Just memo whileループ while (condition) conditionに当てはまった場合、ループが行われる。 なので、このコードに到達した場合、condifitonの結果が先に読み取られる do-while ループ do { //statement } while (condition); do-whileは、まずdoのstatemen…

C++ if文の終わりに;がある場合

C++

完全にひっかかった。 int number; cout << "Enter a number : "; cin >> number; if (number < 50); cout << "It's less than 50!" << endl; if (number > 50) cout << "It's greater than 50!" << endl; else cout << "I don't know"; この場合、、、 最初…

C++ Vector内の数値の最大値、最小値の求め方

C++

*iteratorを使わない場合のやり方。iteratorを使うケースは追々記述します。 #include <vector> #include <iostream> using namespace std; int main() { vector <int> vec {10,9,8,7,6,5,4,3,2,1,0}; int smallest {}; int largest {}; smallest = vec.at(0); for (auto val: vec) </int></iostream></vector>…

C++ 小数点n桁を丸めたい時

C++

そんな時は、 #include<iomanip> をインクルードし coutに cout << fixed << setprecision(1) をすれば良いだけです。 ()の中に該当するのが丸める桁数。 例だと小数点1桁以下を丸める。 #include <iostream> #include <vector> #include <iomanip> using namespace std; int main() { double tot</iomanip></vector></iostream></iomanip>…

C++ レンジベースのLoop

C++

C++にこんな機能があったとは、、全く知りませんでした。 リスト内の変数分forループの場合 #include <iostream> using namespace std; int main() { int scores[] {10,20,30}; for (auto score: scores) cout << score << endl; return 0; } for文の中では、配列の値</iostream>…

C++ for Loop Tips

C++

for文の中でのカウンター変数宣言 int main () { for (int i {0} ; i < 5 ; i++) { //statement } } こうすると、for文の中だけで変数 i は使用される。 例えば、for文の外で、 int = 100 とかを行うと、コンパイルエラーとなる。 for文用の変数はfor文の条…

C++ Conditional Operator

C++

C++のConditional Operator、コードの行数が減っていいですね。 if elseをアホみたいに書いてしまってたが、今度からこれ使お。。。 例えば #include <iostream> using namespace std; int main() { int comp1 {10}; int comp2 {20}; if (comp1 < comp2) cout << "larg</iostream>…

C++ boolappha/notboolalpha、数字比較時の注意点

C++

bool型変数の値の表示を0/1 -> True/Flaseに切り替えたい場合 C++は下記boolalpha/notboolalphaマニュピレーターを使用することでbool型変数の表示方式を切り替えることができる #include <iostream> using namespace std; int main() { //cout << boolalpha; bool equ</iostream>…

C++ 変数型タイプのキャスティングについて

C++

Lower / HIgher タイプの互換 lower(int) op higher(double) 2 * 0,5 2 は 2.0 に変換される lower = higher int num {0}; num = 100.2; 100.2はintの100に変換される lowerからhigherは予期せぬ動作にならないが、(ならないこともないがマシ) higherからl…

C++ Preインクリメント / Postインクリメント

C++

違いがあるの、しらなかった・・・ Preインクリメント counter = 10; result = 0; result = ++counter; count << "counter : " << counter << endl; count << "result : " << result << endl; これ、resultもcounterも11になります。 Preなので、その変数が…

C++ vector 配列参照と値の追加と大きさの確認

C++

配列の値参照 vector <int> array {1,2,3,4,5} これは普通にarray[0]でもOKですが C++ではarray.at(0)でも参照可能 .at()で値の確認をすると、array.at(5) とかをやっちゃっても、 ちゃんとプログラム上でout_of_rangeですよと言ってくれるらしい! 値の追加 vecto</int>…

C++ Vector

C++

宣言 #include <vector> ←必ず必要(stdライブラリを使うため) using namespace std; vector <char> a; vector <int> i; ・vectorの数を宣言したい場合 vector <char> a (5); vector <int> i (5); ・vectorの初期化 vector <char> {'a', 'b', 'c', 'd', 'e'}; vector <char> { 100, 99, 98, 97, 96}; </char></char></int></char></int></char></vector>…

C++ Namespaces 定義の仕方

C++

stdとかのnamespacesを使用したい時の2通りのやり方 1. stdを冒頭に定義してしまう using namespace std; *ただ、これをやってしまうとcoutとかcinだけ使いたいのに、全部のfucntionが使用されてしまうことになるので、大規模プログラムには向かない 2. 使い…

typedef

C++

構造体

C++ クラス コンストラクタ デストラクタ

C++

C++ class