記事ディレクトリ
sta::アトミック
最も基本的なの原子整数类型
はstd::atomic(事前定義されたエイリアスstd :: atomic_boolを使用できます)です。これはstd :: atomic_flagよりもフル機能のブールフラグであり、非アトミックブールで割り当てて初期化できます。
std::atomic<bool> b(true);
b=false;
アトミック代入演算は、参照ではなく値を返すことに注意してください。
クリアを使用するstd::atomic_flagとは異なり、std :: atomic書き込み(ストア)操作はstoreを介して実行されます。test_and_setもexchange関数に置き換えられます。この関数は、元の値を新しい値に置き換えて、で元の値を取得できます。同時。std :: atomicは、プレーンブール値への暗黙的な変換、またはロード操作であるload関数の呼び出しによって、値に対する変更されていないクエリをサポートします。
std::atomic<bool> b;
bool x=b.load(std::memory_order_require);
b.store(true);
x=b.exchange(false,std::memory_order_acq_rel);
自動タイプの使用法の要約
使用する
autoは、C++プログラミング言語のキーワードです。どちらの場合も
(1)変数を宣言するとき、変数の型は初期化式に従って自動的に推測されます
(2)関数が宣言されたときの関数の戻り値のプレースホルダー
autoは、変数が宣言されたときの変数の初期値のタイプに基づいて、この変数に一致するタイプを自動的に選択できます。
例:値x = 1の場合、次のように宣言します:int x=1またはlongx= 1、またはauto x=1を直接宣言します
利用方法
宣言された変数のタイプは、次のように初期化式から自動的に推測されます。
auto f = 3.14; //double
auto s("hello"); //const char*
auto z = new auto(9); //int *
auto x1 = 5, x2 = 5.0, x3 = 'r'; //错误,必须是初始化为同一类型
ただし、このような単純な変数宣言型の場合、autoキーワードを使用することはお勧めしませんが、その型をより明確に記述してください。
autoキーワードは、型が長く複雑で、変数の使用範囲が特定されている場合に適しているため、プログラムがより明確で読みやすくなります。そのような:
std::vector<int> vect;
for(auto it = vect.begin(); it != vect.end(); ++it)
{
//it的类型是std::vector<int>::iterator
std::cin >> *it;
}