2016-05-22 12 views
-5

C++でのデータ型の宣言について混乱します。一般的には、 - int a;のように書かれています。変数aは整数データ型であるという意味です。しかし、ベクトル型の配列の場合は、-vector<integer> vectorname;と書かれています。これはなぜ必要なのでしょうか?ベクトルはC++のクラスのようなものなのでしょうか?私は多少、関連トピックを議論し、以下のリンクをチェックしていますなぜベクトルのデータ型がC++の山括弧で宣言されていますか?

これらのリンクは、私が理解し、知っているテンプレート宣言のための角括弧の有用性を議論します。なぜこれらがベクターに必要なのかという疑問に対する答えを得ることができませんでした。

+3

'std :: vector'はクラステンプレートです。山括弧で囲んだものがそのパラメータです。あなたはあなたがこれを理解し、知っていると言います、それではもう何が分かりませんか? –

+0

私はあなたが[this](http://www.codeproject.com/Articles/257589/An-Idiots-Guide-to-Cplusplus-Templates-Part)を読む必要があると思います。 –

+0

「なぜこれが必要ですか?」そうではないかもしれませんが、誰もまだ分かりません。どのようにあなたは山括弧なしでそれを書くだろうか? –

答えて

2

C++で<T>のようなものが見つかるたびに、それがテンプレートです。テンプレートはコンパイル時に別のコードを作るために使うことができる "レシピ"のようなものです。別の言い方をすれば、(多くの場合、タイプはintまたはstringなど)は単なるパラメータであり、Cまたは他の言語の関数がどのようにパラメータを持つかと同じです。しかし、C++では、これらのパラメータはコンパイル時に評価されるため、プログラムをビルドすると実行するコストはかかりません。

+0

John、簡潔な回答をいただきありがとうございます。ベクトルはテンプレートであり、配列はそうではないため、同様の宣言の構文は必要ありませんか?はいの場合、あらかじめ定義されたテンプレートをすべて知っていれば、私が参照できるリストはありますか? –

+1

@AGOEL _ "私が参照できるリストはありますか?" _ [Sure](http://en.cppreference.com/w/cpp) –

+0

@AGOEL:実際にはC++の配列に似た構文があります: std :: array arr; '。コンパイル時に 'int arr [10]; 'と言ったときにCがすることを行うために' 10'が使われることに注意してください。 –

関連する問題