Page List

Search on the blog

2014年6月9日月曜日

C#入門(3)Tuple

 C++のpair的なものを探していたらTupleがあったので使ってみた。
pairとの違いは、
  • Tupleは3組以上の組み合わせも出来る
  • Tupleはimmutable

とりあえず
  • Tupleを生成する
  • Tupleを要素に持つListをソートする
というコードを書いてみた。

ソートは、デフォルトソート(要素1, 要素2, 要素3, ...という順にソートしていく)とラムダ式を使ったソートを書いてみた。
using System;
using System.Collections.Generic;

namespace sample
{
    public class TupleSample
    {
        public static void Main(string[] args) {
            // tuple generation example
            Tuple<string, int> t = Tuple.Create("taro", 15);
            Console.WriteLine("{0} {1}, {2}", t, t.Item1, t.Item2);

            var u = Tuple.Create("taro", "yamada", 15, 170, 60, "AB");
            Console.WriteLine("{0}", u);

            // tuple sort example
            List<Tuple<int, int>> ts = new List<Tuple<int, int>>();
            Random rnd = new Random();
            for (int i = 0; i < 10; i++) {
                int x = rnd.Next(10);
                int y = rnd.Next(10);
                ts.Add(Tuple.Create(x, y));
            }

            Console.WriteLine("sort by item1, then item2.");
            ts.Sort();
            foreach (var x in ts) 
                Console.WriteLine("{0}", x);

            Console.WriteLine("sort by item2, then item1.");
            ts.Sort((a, b) => (a.Item2 != b.Item2) ? (a.Item2 - b.Item2) : (a.Item1 - b.Item1));
            foreach (var x in ts) 
                Console.WriteLine("{0}", x);

        }
    }
}

0 件のコメント:

コメントを投稿