1. ホーム
  2. c++

[解決済み] C++による簡単な辞書

2022-03-01 03:58:21

質問

PythonからC++にいくつかのコードを移動する。

BASEPAIRS = { "T": "A", "A": "T", "G": "C", "C": "G" }

マップはやりすぎかも? あなたなら何を使いますか?

どのように解決するのか?

もしあなたが最適化に興味があり、入力が常に4文字のうちの1つであると仮定するならば、以下の関数はマップの代わりとして試してみる価値があるかもしれません。

char map(const char in)
{ return ((in & 2) ? '\x8a' - in : '\x95' - in); }

これは、対称的な2つのペアを扱っているという事実に基づいて動作します。条件式はA/TのペアとG/Cのペアを区別するために働きます('G'と'C'はたまたま最下位ビットが共通です)。残りの演算は、対称性のあるマッピングを行う。これは、任意のa,bに対してa = (a + b) - bが真であるという事実に基づいています。