C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++のautoとdecltypeとは何ですか?


AutoはC++11以降のキーワードであり、自動型推定に使用されます。型推論または推論とは、プログラミング言語での式のデータ型の自動検出を指します。これは、静的に型付けされた一部の言語に存在する機能です。たとえば、ベクトルを反復処理するイテレータを作成する場合、その目的でautoを使用できます。

#include<iostream>
#include<vector>
using namespace std;
int main() {
   vector<int> arr(10);
   for(auto it = arr.begin(); it != arr.end(); it ++) {
      cin >> *it;
   }
   return 0;
}

上記のプログラムでは、タイプstd ::vector ::iteratorを自動的に取得します。

decltype型指定子は、指定された式の型を生成します。変数に割り当てられている値に基づいて型を推測するautoとは異なり、decltypeは渡された式から型を推測します。 decltypeによって返される値は、別の変数を定義するために直接使用できます。たとえば、上記のコードは、decltype-

を使用して次のように記述できます。
#include <iostream>
#include <vector>
using namespace std;
int main() {
   vector<int> arr(10);
   for (decltype(arr.begin()) it = arr.begin(); it != arr.end(); it++) {
      cin >> *it;
   }
   return 0;
}

decltypeで示されるタイプは、autoで推定されるタイプとは異なる場合があることに注意してください。これらの微妙な違いについて詳しくは、C++での型推論に関するこの12ページの説明を参照してください-https://thbecker.net/articles/auto_and_decltype/section_01.html


  1. C ++の型指定子とは何ですか?

    C ++などの静的に型指定された言語で変数を最初に宣言するときは、その変数が何を保持するかを宣言する必要があります。 int number = 42; この例では、「int」は、変数「number」が整数のみを保持できることを示す型指定子です。 rubyやjavascriptなどの動的型付け言語では、変数を宣言するだけです。 var number = 42; C ++には、double、char、floatなどの組み込み型指定子がたくさんあります。クラスと構造体を作成して、独自の指定子を作成することもできます。

  2. C ++の型修飾子とは何ですか?

    型修飾子は、型に適用されるキーワードであり、結果として修飾型になります。たとえば、const intは定数整数を表す修飾型ですが、intは対応する非修飾型であり、単に整数です。型修飾子は、型システムを介して値に関する追加情報を表現し、データの使用の正確さを保証する方法です。 2014およびC11の時点で、標準Cには4つの型修飾子があります。const(C89)、volatile(C89)、restrict(C99)、および_Atomic(C11)です。これらの最初の2つであるconstとvolatileは、C ++にも存在し、C++の唯一の型修飾子です。