私はC++の真の初心者であり、非常に簡単な質問があります。
vector<int> s[10];
この宣言は実際に何をしますか?saベクトルは10個の整数の容量がありますか?これとの違いは何ですか:
vector<int> s(10);
これがばかげた質問であるならば本当に申し訳ありませんが、私はこの宣言が何をするのか本当に理解できません。
ありがとう!
私はC++の真の初心者であり、非常に簡単な質問があります。
vector<int> s[10];
この宣言は実際に何をしますか?saベクトルは10個の整数の容量がありますか?これとの違いは何ですか:
vector<int> s(10);
これがばかげた質問であるならば本当に申し訳ありませんが、私はこの宣言が何をするのか本当に理解できません。
ありがとう!
最初のものは、10個の空のベクトルの配列です。
2つ目は、10個の要素で初期化された単一のベクトルです。
これは、std::vectorと組み込みの配列タイプを組み合わせたものです。具体的には、std::vector
;の配列。
vector<int> s[10];
10個のベクトルオブジェクトを作成することを意味します。あなたはそれを次のように考えることができます:
vector<int> s0;
vector<int> s1;
...
vector<int> s10;
ベクトルオブジェクトの数は固定されています。各ベクトルのアイテム数はさまざまです。
Vectorには、次のようなコンストラクターがあります。
vector (size_type n);
したがって、2番目は、サイズが10のintのベクトルを宣言するだけです。
vector<int> s[10];
「s」は配列であり、10 個の要素があり、各要素の型は であることを意味しますvector<int>
。
vector<int> s(10);
「s」が でありvector<int>
、このベクトルのサイズが 10 であることを意味しますが、これは宣言ではありません。
多くのパラメーターと複雑な戻り値を持つ種類の関数を指す関数ポインターを宣言する場合、はるかに複雑な宣言が存在する可能性があります。
例えば:
vector<int> (*func[10])(int *);
これは、パラメーターを受け取りint *
、値を返す関数へのポインター ポイントを宣言しますvector<int>
。さらに、この種のポインターの配列であり、配列のサイズは 10 です。