Словарь - это я верю в то, что вы хотите:
Dictionary<String, int> dict = new Dictionary<String, int>();
dict.Add("key", 0);
Console.WriteLine(dict["key"]);
и т. Д. И т. П.
MSDN: http://msdn.microsoft.com/en-us/library/xfhwa508.aspx
Вы можете указать более или менее любой тип в качестве типа ключ / значение. Включая другой словарь, массив или что-то еще:
Dictionary<String, String[]> dict = new Dictionary<String, String[]>();
Таким образом, здесь каждый элемент в Словаре указывает на массив строк.
Чтобы реализовать то, что вам нужно (с вектором int), вам потребуется List в качестве типа значения:
Dictionary<String, List<int>> dict = new Dictionary<String, List<int>>();
Стоит отметить, что в словаре нет предопределенного порядка, а в std :: map - нет. Если порядок важен, вы можете вместо этого использовать SortedDictionary, который почти идентичен в использовании, но сортирует по ключу. Все зависит от того, действительно ли вы планируете перебирать словарь.
Обратите внимание, однако, что если вы используете класс, который вы создали в качестве ключа, вам нужно будет правильно переопределить GetHashCode и Equals.