名前と得点をメンバに持つExamの集合がある。
得点順にソートし、30点以上80点未満を列挙せよ。
って問題があるとするわな。
STL/CLRならさっくしと解決できて:
cliext::vector<Exam^> exam;
exam.push_back(gcnew Exam(L"相川", 35));
exam.push_back(gcnew Exam(L"井上", 20));
exam.push_back(gcnew Exam(L"上村", 80));
exam.push_back(gcnew Exam(L"江口", 50));
exam.push_back(gcnew Exam(L"小田", 75));
cliext::sort(exam.begin(), exam.end());
cliext::vector<Exam^>::iterator
from = cliext::lower_bound(exam.begin(), exam.end(), gcnew Exam(L"",30));
cliext::vector<Exam^>::iterator
to = cliext::lower_bound(exam.begin(), exam.end(), gcnew Exam(L"",80));
while ( from != to ) {
Console::WriteLine(L"{0}:{1}", from->name, from->score);
++from;
}
ま、こんな感じ。
これを System.Collections.Generic.List<Exam> でやろうとすると
どないになるんす? おしえてC#/VBのえらいひと。