入力変数に応じて、1 つのベクトルを実数または複素数として定義する必要があるアルゴリズムを開発しています。擬似は次のようになります
void foo(bool is_real)
{
if (is_real)
{
vector< double > v;
}
else vector< complex > v;
}
現在、私は 2 つの異なるバージョンのアルゴリズムを作成しています。is_real が true の場合は、実際のケースのアルゴリズムを使用し、それ以外の場合は複雑なケースを使用します。実際、データ型を除いて、両方のアルゴリズムはまったく同じです。だから私はそれをグーグルで検索し、
#if is_real
vector< double > v;
#else
vector< complex > v;
#endif
しかし、このコードはコンパイルされません。Linux gnu c++ 4.7.2 を使用しています。マクロは Microsoft C++ でしか機能しないのでしょうか? 私の実装では唯一の違いはデータ型であるため、快適ではありません。実行時に使用する型を選択する方法はありますか? ありがとう。