2013-07-23 2 views
0

Это, вероятно, простой вопрос, но как мне получить доступ к значению словарного ключа в определенной строке. Скажем, Dict: { 1,13; 3,14; 5,17 } Второй ключ: 3.Доступ к клавише словаря по его индексу

Как получить эту ценность? я попытался Dict->Key[2], но дал ошибку и не могу найти ссылку на него

Update: Это дает мне то, что мне нужно, но, может быть, есть более быстрый способ.

Dictionary<double, double>::KeyCollection^ keyColl = Dict->Keys; 

double first; 
double last; 

    int counter=0; 
    int dictionaryCount = Dict->Count; 
for each(double s in keyColl) 
{ 
if(counter==0){ 
    first=s; 
} 
if(dictionaryCount == counter+1){ 
    last=s; 
} 
//Dict[first] would be the first key 
//Dict[last] would be the last key 
+0

Я думаю, что это зависит от того, как реализован словарь, потому что он может перенастроить строки, чтобы ускорить поиск. –

+0

В принципе мне нужно значение ключа в строке 1, строка 2, строка 3. Мне нужно 1 , 3, 5 возвращаются как значения. – fmvpsenior

+0

Словари неупорядочены (хеш-таблицы) или самонастраиваются (btrees). Покажите нам свой код, мы знаем, с каким типом вы работаете. – sehe

ответ

2

< Словарь> класс имеет индексатор, вы используете его, применяя оператор [] непосредственно к ссылке на объект. Он называется Item в статьях библиотеки MSDN. Индексатор для словаря принимает ключ и возвращает значение для ключа. Пример кода:

auto dict = gcnew Dictionary<int, double>(); 
dict->Add(1, 13); 
dict->Add(3, 14); 
dict->Add(5, 17); 
auto value = dict[3]; 

Вы можете использовать метод TryGetValue() вместо этого, если вы не уверены, что если ключ присутствует.

Словарь Dict<double,double>

ли остерегаться, что использование двойной как ключ является очень хлопотно. Сравнение значений с плавающей запятой для равенства заполняется сюрпризами, ни одна из них не хороша. Вы должны использовать конструктор Dictionary(IEqualityComparer<>) и передать свой собственный компаратор, чтобы иметь любую надежду на его сохранение. Задайте другой вопрос, если это необходимо.

+0

I нужно получить ключ во второй записи, а не значение – fmvpsenior

+1

Словарь не упорядоченная коллекция, нет понятия «вторая запись». Список <> представляет собой упорядоченный набор. –

Смежные вопросы