[アルゴリズム]基本コード作成テクニック
3339 ワード
すべての内容は以下の内容を参照して作成されています.
1.STLと関数パラメータ
第1に、intを関数パラメータとして送信すると、値がコピーされスキップされます.したがって、関数で値を変更してもmainの変数tには影響しません.
第二に、arr[0]を変更し、int配列arrをパラメータとしてfuncがarrのアドレスに渡し、func関数でarr[0]を変更すると、クラス属の値も自然に変更されます.
最後に、構造体ではintのようにすべての値がコピーされるため、func関数で値を変更しても元の値には影響しません.
C++では,ポインタに加えて参照者(reference)というソリューションがある.swap 3関数では、関数パラメータaとbのtypeがintではなく、intの後ろに&を付けることがわかります.だからaとbはint reference
aとbを参照として作成すると、関数のコードはintを書くように、aをtmpに置き換え、bをaに置き換えます.これらは元のものです.
STLも構造体のように関数パラメータとして送信されるとコピーして送信されることに注意してください.
標準I/O
sync with stdio(0):C++ストリームを書き込むだけで同期を中断でき、プログラム実行時間内にメリットが得られます.ただしcoutとprintfは絶対に混合してはいけません.混ぜて使うと順番が違います cin.tie(0):cinコマンドを実行する前にcoutバッファを空にしないコード
endは、全行文字("n")を出力し、出力バッファを空にするコマンドです.前述したように,どうせブロックはプログラム終了時に出力結果で採点されるので,中間バッファのクリアを命令する必要は全くない.改行が必要な場合は、改行記号(n)を出力するだけで、行をブレークする必要はありません.
2.コードヒントの作成
1.STLと関数パラメータ
関数パラメータ
第1に、intを関数パラメータとして送信すると、値がコピーされスキップされます.したがって、関数で値を変更してもmainの変数tには影響しません.
第二に、arr[0]を変更し、int配列arrをパラメータとしてfuncがarrのアドレスに渡し、func関数でarr[0]を変更すると、クラス属の値も自然に変更されます.
最後に、構造体ではintのようにすべての値がコピーされるため、func関数で値を変更しても元の値には影響しません.
リファレンス
C++では,ポインタに加えて参照者(reference)というソリューションがある.swap 3関数では、関数パラメータaとbのtypeがintではなく、intの後ろに&を付けることがわかります.だからaとbはint reference
aとbを参照として作成すると、関数のコードはintを書くように、aをtmpに置き換え、bをaに置き換えます.これらは元のものです.
STL(Standard Template Library)
vector
//#include <vector>
vector<int> v(100);
v[20] = 10;
v[60] = -4;
STLを関数パラメータに渡す場合
STLも構造体のように関数パラメータとして送信されるとコピーして送信されることに注意してください.
cmp1
は、2つのベクトルをパラメータとして受信し、idxの2番目の要素値を比較した結果を返す関数です.v 1、v 2をパラメータとして送信する場合は、元のファイルからコピーを作成する必要があります.v 1,v 2の大きさはNであるため,N個の要素の複製過程はO(N)である.したがって,この関数の時間的複雑さは意外にもO(N)となる.cmp2
は、v 1、v 2のタイプをベクトルの参照とする.これは、cmp 2を呼び出すとコピーが作成されず、参照先のアドレス情報のみがスキップされるため、時間的複雑さがO(1)になる.標準I/O
C: scanf/printf, Cpp: cin/cout
cin << num;
cout >> "hello";
+)scanf/printfが1つしか残念でない場合、C++文字列は処理できません.ご存知のように、Cはcharを使用して文字列を処理しますが、実際にはC++stringはcharよりも便利です.したがって、scanf/printfを書きながらC++stringを利用したい場合は、char*で入力を受信してstringに変換し、c str()メソッドで出力することができます.
cin/cout I/Oによるタイムアウトの回避
ios::sync_with_stdio(0);
cin.tie(0);
scanf/printfとは異なり、cin/coutはI/Oタイムアウトを防ぐために上記の2つのコマンドを実行する必要があります.これをしないと、入出力量が大きいときにタイムアウトする可能性があります.
cin << num;
cout >> "hello";
ios::sync_with_stdio(0);
cin.tie(0);
禁止する
endは、全行文字("n")を出力し、出力バッファを空にするコマンドです.前述したように,どうせブロックはプログラム終了時に出力結果で採点されるので,中間バッファのクリアを命令する必要は全くない.改行が必要な場合は、改行記号(n)を出力するだけで、行をブレークする必要はありません.
2.コードヒントの作成
符号化テストと開発は異なる。
コードテストでは、私が混同しない範囲で、どうしてもタイプを節約しなければなりません.だから右上と一緒に押し合います
符号化テストの目標は,他人が認識できるコードを記述することではない.どうしても限られた時間内に正解を得なければならない.そのため、コードをほとんど本の例として整理できるように努力するよりも、少し汚れていても、私が迅速に書くことができる方法で迅速に実施するほうがいいです.
実際、問題の状況から見ると、私は自分を並べる必要がないので、右下に縮小します.
出力の最後にスペースや改行を追加しても構いません。
デバッガは必ずしも使用する必要はありません。
実装が完了した後、正しい例示的な答えがなければ、デバッガを使用してコードの誤りを理解することがあるが、実際には、符号化テストのコードは最大100行程度の長さが必要である.
このときデバッガを開くと、少しもつれて泥沼にはまっているような感じがするので、中間変数も見たい場合はcoutやprintf印刷出力で確認し、デバッガは使用しないことをお勧めします.しかし、これはただのアドバイスで、どう考えても、デバッガを使ったほうがいいと思ったら、使っても大丈夫です.
Reference
この問題について([アルゴリズム]基本コード作成テクニック), 我々は、より多くの情報をここで見つけました
https://velog.io/@thing-zoo/알고리즘기초-코드-작성-요령
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について([アルゴリズム]基本コード作成テクニック), 我々は、より多くの情報をここで見つけました https://velog.io/@thing-zoo/알고리즘기초-코드-작성-요령テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol