С другой стороны, мне сказали, что в C++.net есть какие-то двойные списки, в которых 2-й аргумент может быть произвольным типом. TList и THashMap вроде. Если найду, наверное буду их использовать. Неохота мучиться...
Возможно, вы имели в виду generics? Это классы, параметризованные какими-нибудь типами (примерно как шаблоны в C++, но с информацией, доступной во время выполнения,
и аккуратной реализацией). Например, типу
vector<int> в C++ соответствует
List<int> в .NET. Разумеется, параметров-типов может быть много: например,
Dictionary<K, V>, реализующий доступ к значениям типа
V, индексируя их ключами типа
K; он реализован на хеш-таблице и, по идее, аналогичен
hashtable из STL, но сколько у этого шаблона параметров — не знаю (если это вообще шаблонный класс). Есть ещё
Hashtable, но это не generic, просто класс без параметров, и потому возвращает
Object, и к нужному типу надо будет приводить. Есть ещё специализированные классы (параметры сейчас не помню, но должны быть, кроме последнего, те же, что и у
Dictionary):
HybridDictionary — использует хеш-таблицу при большом числе элементов и список при маленьком,
OrderedDictionary — можно индексировать ещё и целыми числами,
SortedDictionary — поддерживается упорядоченность записей,
StringDictionary — оптимизирован для строк. В STL тоже должно быть разнообразие.
Кстати, имена типов в .NET не начинаются с
T (кроме интерфейсов, которые всегда с
I и перечислений, которые рекомендуется называть словом во множественном числе).