C#で配列のサイズが固定されているかどうかを確認する方法
C#で配列のサイズが固定されているかどうかを確認するには、IsFixedSizeプロパティを使用します。このプロパティは、配列が固定サイズを持つ場合にtrueを返す真偽値です。以下のサンプルコードで、その動作を詳しく見ていきましょう。
サンプルコード
using System;
public class Demo {
public static void Main(){
string[] products = new string[] { "Electronics", "Accessories", "Clothing", "Toys", "Clothing", "Furniture" };
Console.WriteLine("製品リスト...");
foreach(string s in products){
Console.WriteLine(s);
}
Console.WriteLine("配列に「Accessories」という製品は存在するか? = {0}",
Array.Exists(products, ele => ele == "Accessories"));
Console.WriteLine("配列に「Stationery」という製品は存在するか? = {0}",
Array.Exists(products, ele => ele == "Stationery"));
Console.WriteLine("\n「C」で始まる製品が1つ以上あるか? = {0}",
Array.Exists(products, ele => ele.StartsWith("C")));
Console.WriteLine("「D」で始まる製品が1つ以上あるか? = {0}",
Array.Exists(products, ele => ele.StartsWith("D")));
Console.WriteLine("「T」で始まる製品が1つ以上あるか? = {0}",
Array.Exists(products, ele => ele.StartsWith("T")));
Console.WriteLine("「E」で始まる製品が1つ以上あるか? = {0}",
Array.Exists(products, ele => ele.StartsWith("E")));
Console.WriteLine("\n配列のサイズは固定されているか? = " + products.IsFixedSize);
}
}
実行結果
上記のコードを実行すると、次のような出力が得られます。
製品リスト... Electronics Accessories Clothing Toys Clothing Furniture 配列に「Accessories」という製品は存在するか? = True 配列に「Stationery」という製品は存在するか? = False 「C」で始まる製品が1つ以上あるか? = True 「D」で始まる製品が1つ以上あるか? = False 「T」で始まる製品が1つ以上あるか? = True 「E」で始まる製品が1つ以上あるか? = True 配列のサイズは固定されているか? = True
IsFixedSizeプロパティのポイント
IsFixedSizeは、IListインターフェースで定義されたプロパティで、配列やコレクションが固定サイズかどうかを示すbool値を返します。C#の通常の配列(T[])は宣言時に要素数が決まり、後からサイズを変更できないため、常にtrueを返します。実行時に要素数を柔軟に増減させたい場合は、List<T>のような可変サイズのコレクションを使うのが一般的です。
また、サンプル内で使用しているArray.Existsメソッドは、ラムダ式で指定した条件に一致する要素が配列内に1つでも存在すればtrueを返します。要素の存在チェックと組み合わせると、配列操作の幅が大きく広がります。
別の例:空の配列の場合
続いて、要素が1つも含まれていない空の配列での動作を確認してみましょう。
using System;
public class Demo {
public static void Main(){
string[] products = new string[] { };
Console.WriteLine("「E」で始まる製品が1つ以上あるか? = {0}",
Array.Exists(products, ele => ele.StartsWith("E")));
Console.WriteLine("配列のサイズは固定されているか? = " + products.IsFixedSize);
}
}
実行結果
この場合の出力は以下のとおりです。空の配列であってもサイズが固定されていることに変わりはないため、IsFixedSizeはtrueを返します。
「E」で始まる製品が1つ以上あるか? = False 配列のサイズは固定されているか? = True
まとめ
配列が固定サイズかどうかを判定するにはIsFixedSizeプロパティを使います。C#の標準的な配列はすべて固定サイズであるため、このプロパティは常にtrueを返します。さらに、Array.Existsメソッドを併用すれば、条件に一致する要素が配列内に存在するかどうかも簡単にチェックできます。用途に応じて両者を使い分け、効率的な配列操作を行いましょう。
-
配列が高さnのBSTを表せるかどうかをC++で判定する方法
サイズnの配列が与えられたとき、その配列が高さnの二分探索木(BST)を表すことができるかどうかを判定する問題について解説します。ここで「高さn」とは、根から葉までの最長パスがn個のノードで構成されることを意味し、つまり配列の各要素が木の各レベルに1つずつ対応することを指します。 問題の理解 BSTのルールに従って要素を挿入していくとき、配列の順序通りに挿入した結果、高さがちょうどn(要素数と同じ)になるかどうかを確認します。これは、配列の各要素が前の要素の左または右の子として挿入され、一度も同じレベルに複数のノードが配置されないことを意味します。 例として以下の2つの配列を考えます:
-
Pythonで配列が二分探索木(BST)の中間順巡回を表しているかどうかを判定する方法
数値の配列 nums が与えられたとき、その配列がある二分探索木(Binary Search Tree)を中間順巡回(inorder traversal)した結果と一致する順序で要素を保持しているかどうかを判定します。例えば、入力が nums = [5, 8, 15, 18, 20, 26, 39] の場合、この配列は以下の二分探索木を中間順巡回した結果と一致するため、出力は True になります。解法のポイントここで重要な性質があります。それは、二分探索木を中間順巡回すると、必ず昇順にソートされた要素列が得られるというものです。したがって、この問題は「配列が昇順に並んでいるかどうかを確認する