/// <summary> /// 同じ内容を持つスタックのインスタンスを作成します。 /// </summary> /// <typeparam name="T">スタックの要素の型を指定します。</typeparam> /// <param name="stack">コピー元のスタックを指定します。</param> /// <returns>指定したスタックと同じ内容を持つ、新しいスタックを返します。</returns> public static Gen::Stack <T> Clone <T>(this Gen::Stack <T> stack) { T[] values = stack.ToArray(); Gen::Stack <T> ret = new Gen::Stack <T>(values.Length); for (int i = values.Length - 1; i >= 0; i--) { ret.Push(values[i]); } return(ret); }
/// <summary> /// スタックの各要素を変換した新しいスタックを作成します。 /// </summary> /// <typeparam name="T">変換前の要素の型を指定します。</typeparam> /// <typeparam name="U">変換後の要素の型を指定します。</typeparam> /// <param name="stack">変換前の要素を格納したスタックを指定します。</param> /// <param name="converter">要素の変換に使用するデリゲートを指定します。</param> /// <returns>要素を変換して出来たスタックを返します。</returns> public static Gen::Stack <U> ConvertAll <T, U>(this Gen::Stack <T> stack, Converter <T, U> converter) { T[] values = stack.ToArray(); Gen::Stack <U> ret = new Gen::Stack <U>(values.Length); for (int i = values.Length - 1; i >= 0; i--) { ret.Push(converter(values[i])); } return(ret); }
private static void PrintStack(Gen::Stack <int> st) { System.Console.Write("content of st: "); int[] starr = st.ToArray(); for (int i = starr.Length - 1; i >= 0; i--) { int val = starr[i]; System.Console.Write("{0}, ", val); } //foreach(int val in st)System.Console.Write("{0}, ",val); System.Console.WriteLine("(top);"); System.Console.WriteLine("count of st: {0}", st.Count); }