「C++23」 - 製図

C++ リファレンス マニュアル - cppreference.com

公式がC++23のリビジョンとアップデート意見を公開しました!ただ、草案だけが存在しており、標準的な公式文書にはまだ組み込まれていない。しかし、近々、整理され次第、利用可能になる予定です。

簡単なものをいくつか見てみましょう。

#elifdef#elifndef (C++23 以降) および #endif ディレクティブが制御されます。

文法:


#if 表达式		
#ifdef 标识符		
#ifndef 标识符		
#elif 表达式		
#elifdef 标识符		(C++23 起)
#elifndef 标识符		(C++23 起)
#else		
#endif

cpp23 以降、言語への変更は 1 つだけであり、マクロによって前処理メソッドが定義されます。さらに2 つの#elifdef 、 #elifndefがあります。使い方は上記の通りで、以下に書いたことと同等です。

#if SOMEMACRO > 10
#elifdef SOMEOTHERMACRO
// 等价于#elif defined(SOMEOTHERMACRO)
#elifndef SOMEOTHERMACRO2
// 等价于to #elif !defined(SOMEOTHERMACRO2)
#endif

公式 Web サイトの #elifdef と #elifndefの説明には、30 年間の変更でさらに 2 つのマクロ定義が含まれており、これは素晴らしいことです。また、これは#warning 単なる警告であり、コンパイルは停止しないことを意味する診断メッセージもあります (説明は省略します)。

//#if和指令测试指定的条件(见下文),如果计算结果为 true,则编译受控代码块。在这种情况下,后续的、#elifdef、#elifndef(自 C++23 起)和指令将被忽略。
//否则,如果指定的条件计算结果为 false,则跳过受控代码块,并处理后续的 、
//#elifdef #elifndef(自 C++23 起)或指令(如果有)。如果后续指令为 ,则无条件编译由该指令控制的代码块。否则,、
//#elifdef 或 #elifndef(自 C++23 起)指令就像指令一样:检查条件,根据结果编译或跳过受控代码块,在后一种情况下处理后续、
//#elifdef #elifndef(自 C++23 起)和指令。条件预处理块由指令终止。

言語の各バージョンのリビジョンは、通常の使用ではほとんど使用されない標準ライブラリにより適していることは注目に値します。実際の導入には1~2年程度かかるため、システムを適応させて更新するしかありません。結局のところ、現在の国内状況を見る限り、ほとんどの人は依然として C++11 に留まっているのです。C++11 の新機能は十分なので、その多くは使用されていません。最新の PC ターミナルは c++17 までしか実装されていないため、非常に先のことのように思える記事です。しかし、基準委員会の関係者はすでに 2026 年の CPP 計画の改定に向けた準備を始めています。もうそんなことは関係ない。今日の Cpp は、誰が学習できるかというと、最も不人気な言語となっています。次。

新しい標準ライブラリ

23 以降、非常に多くの標準ライブラリが追加されました。それぞれに独自の機能があります。簡単に言えば、<print> を見ましたが、何年も経って、C++ 独自の <print> が登場します。今年の標準では、入出力ストリームが初めて最適化され、メモリ領域が 2 倍節約され、効率が 7% 向上します。キャラクターに対してさまざまなパフォーマンスの最適化が行われました。

ヘッダーファイルの変更

23 以降の入力および出力ストリーム ヘッダー ファイルは次のようになる可能性があることに注意してください。

import std;
int main()
{
    std::println("Hello World!");
}

これは Python 言語の一種の学習であり、ヘッダー ファイルを十分に簡潔にします。今後どんどん短くなるかも知れませんが、26年後になります。23以降は新しいコーディング手法も導入されており、プログラミングの考え方も以前とは大きく変わる可能性があります。

float<stdfloat>

23 では浮動小数点型が再最適化され、スケーラビリティが向上しました。64、128 ビット、将来の機械学習やその他の考慮事項に関係なく、容量はさらに拡張され、増加しました。

スタック トレース診断ライブラリ Basic_stacktrace

 スタック トレース用のデバッグ ライブラリ。

メモリ管理

次の 4 つのポインターが追加され、いくつかのメモリ効率の最適化が行われます。

 メモリアロケータ 

次の 2 つのアロケータを追加しました

ガベージコレクションの削除

ここで注目すべき点は、c++11 のガベージ コレクション機構が cpp23 では削除されていることです。これについて言われなければ、どれだけの人が知っているでしょうか。ただし、それでも注意が必要です。

 コンテナライブラリ 

これは、上で見た <mdspan> に相当しますが、正直に言うと、<span> (cpp20 ライブラリ) は一度も使用されたことがないため、これについては触れません。

大まかに言うと、簡単なものがいくつかあって、残りはこれだけなので、残りは軽視せず、今後のアップデートを待って完成させてください。

おすすめ

転載: blog.csdn.net/qq_36912885/article/details/128796106