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

可変長配列がC++標準の一部ではないのはなぜですか?


スタック上に潜在的に大きな配列を作成する必要がありますが、これは通常、使用可能なスペースがほとんどないため、適切ではありません。サイズが事前にわかっている場合は、静的配列を使用できます。また、事前にサイズがわからない場合は、安全でないコードを記述します。可変長配列は、型システムで大幅な変更が必要になるため、C++にネイティブに含めることはできません。

C ++の可変長配列の代替は、ベクトルであるC++STLで提供されます。 -

のように使用できます
#include<iostream>
#include<vector>
using namespace std;

int main() {
   vector<int> vec;
   vec.push_back(1);
   vec.push_back(2);
   vec.push_back(3);
   vec.push_back(4);
   vec.push_back(5);
   // ...

   // To iterate over it:
   for(vector<int>::iterator it = vec.begin(); it != vec.end(); it++) {
      cout << *it << endl;
   }
   return 0;
}
出力 これにより出力が得られます-

1
2
3
4
5

  1. C++の迷路

    空のスペースと壁のある迷路の中にボールがあるとします。これで、ボールは上、下、左、右などの任意の方向に転がることで空のパスを通過できますが、壁にぶつかるまで転がりが止まりません。ボールが止まると、次の方向を選択できます。 ボールの位置、目的地、迷路を開始し、ボールが目的地に止まるかどうかを確認する必要があります。迷路は1つの2D配列で表されます。ここで、1は壁を示し、0は空きスペースを示します。迷路の境界はすべて壁です。開始座標と宛先座標は、行と列のインデックスで表されます。 したがって、入力が2D配列で表される迷路のようなものである場合 0 0 1 0 0

  2. C++の特定のノードのサブツリー内のすべてのノードのXOR

    この問題では、nツリーが与えられ、ツリーのノードであるクエリがいくつかあります。私たちのタスクは、指定されたノードによって形成されたサブツリーのすべてのノードのXORを出力することです。 問題を理解するために例を見てみましょう クエリ − {1、6、5} 出力 − 0 0 5 説明 − 1^6^3^2^4^7^5 6^2^4 5 この問題を解決するために、ツリーを1回トラバースして保存することにより、サブツリーのすべてのノードのxorを計算します。ここで、子ノードの場合はサブツリーのすべてのノードのxorを計算し、次に指定されたすべてのサブツリーを計算します。結果を保存す