OIプログラム共通の設計落とし穴

怠惰はいけません

時には便宜のために、私はマクロの多くを使用します。しかし、最近、私は常に次の二つのマクロの問題が見つかりました:

1つ の#define SET(x、A)のmemset(X、はsizeof(X))
 2インラインボイドワーク(){
 3      SET(頭、0)、SET(VIS、0)、SET(DIS、0x3fを)。
図4は、     // 何かを
5 }

このマクロ定義は、初期化中に、いくつかの不可解な質問のようです。

また、これがあります:

1  の#define RP(I、B)(iは= intを登録する;私は= Bを<; I ++の)のための
 2インラインボイド)ワーク({
 3      ベクター< INT > 版。
4      // 何かを行う
5      RP(I、0 ver.size() - 1 ){
 6          // 何か
7      }
 8 }

あなたが定義すると  RPのマクロサイクルを、それが問題の数を決定します。例えば、上記の例では、もしver.size()== 0は、このサイクルの通常入りません。しかし、順序を決定するために、そのマクロ定義の後に変更されているようです。

非常に奇妙な、右?したがって、いくつかは、マクロまたはを台無しにしないでください。私の後にも、この問題に注意してください。

台無しにしないカードが多いです

いくつかのオンラインカードは奇妙な方法は、例えば、しばしばありますが、私++のように書かI = - 〜I、またはステートメントの数へのリンクをたっぷりとカンマ。かつての場合は、速度を向上するために、とてもうまく想像していないとして、事実を最適化し、このバイナリは明白ではありません。後者のために(私はまた、私は速度を増加させる++ ++書きたいが)、ある程度コンマオペレータが、効率を向上させることができ、いくつかの時間は、いくつかの奇妙な問題であろう。ほんの数、残りの部分は無視されますがあり、プログラムの一部である、時々しかし、私は私がコンマに接続の数によって文の多くを置くのが好き、長い時間前に覚えています!私は本当に知っているこの問題を持っていますが、私のアドバイスは、コンマを台無しにしないではありません。

注スペースの複雑さ

任意のアルゴリズムやデータ構造を学習すると、そのスペースの複雑さの完全かつ正確な記録でなければなりません。例えば、トライ程度のスペースの複雑さはどのくらいですか?一般的に多くを開きますか?配列の開放側は二回のタイトルを与えるかどうかを描画する前に、チェーンと星へのデポジットは、?これらの問題は、あなたがサンプルを通過させることができるかもしれない、注意を払っていないが、最終的にポイントを取得するために失敗することがあります。オンライン評価である場合、評価機は時々ませんフィードバックREが、WAを行います。あなたが長い時間のために、この問題をデバッグするために、あなたは、注意を払っていない場合。

その型変換に注意してください。

必ず変換の種類に注意を払います。型変換のint型の式に代入するとき時々、あなたはlong long型に開いているすべての数値型変数を入れた場合でも、あなたは忘れるかもしれません。このように、式が割り当てられる前にオーバーフローします。いつでもあなたは心の中で、変数の種類を維持し、時々それを変換します。

また、キャストはかなり遅いです。あなたは、変数の前で直接long long型に変換したい場合は1LLを掛け、通常のdouble型のため、直接1.0を掛けすることができ、より具体的なまたは__int128 long double型のために、あなただけのキャストすることができます。

おすすめ

転載: www.cnblogs.com/LinearODE/p/11614318.html