Отсортированная очередь существует в.NET?

Помещение инкрементного оператора после переменной означает, что инкремент и присвоение происходят после , выражение оценено... так исходный оператор x = x ++; переводит в 1. Оцените x и сохраните значение в tyransient памяти... Теперь выполните код, требовавшийся ++ оператор.... (шаги 2 & 3) 2. Инкрементное значение x (в переходной памяти) 3. Присвойте Увеличенное значение месту хранения x... Теперь, продолжите отдых выполнения строки, налево, существует = знак... 5. Поэтому присвойте значение, сохраненное на Шаге 1 (неувеличенное значение) к выражению на левом из = знак..., который является x

9
задан Matthew Scharley 25 January 2012 в 01:16
поделиться

6 ответов

Когда вы вызываете [AboutViewController init] , ожидается, что он вызовет некоторую форму [super init] , которая является синонимом для [Инициализация UIViewController] . Когда это произойдет, ваш контроллер представления будет автоматически искать файл пера с именем (в вашем случае) AboutViewController.xib . Если он находит этот файл, он загружает его содержимое в ваш контроллер представления для вас.

Таким образом, все, что вам нужно сделать, это инициализировать ваш контроллер представления и убедиться, что он имеет то же имя, что и связанный файл пера.

] Если вы хотите загрузить файл пера с другим именем в контроллер представления, вы можете явно вызвать initWithNibName: bundle: с именем любого понравившегося файла пера.

Если стандартный init ( с одноименным файлом пера) не работает для вас, Меня интересует только первое значение в списке, как определено алгоритм сортировки в любой момент.

Похоже, вам не нужна сортированная очередь, а Priority Queue . Если производительность является проблемой, то PQ, безусловно, будет быстрее, O (log n) против O (n). Но проблема с удалением дубликатов потребовала бы, чтобы вы также сохранили параллельный HashSet <>.

11
ответ дан 4 December 2019 в 11:06
поделиться

Перейдите по этой ссылке, чтобы решить вашу проблему.

Принимает всего 10 минут, чтобы завершить пошаговое руководство.

Пошаговое руководство: организация ASP.

5
ответ дан 4 December 2019 в 11:06
поделиться

В настоящее время в .NET нет ничего, что удовлетворяло бы всем вашим требованиям. В .NET 4.0 есть класс SortedSet. Я понимаю, что сейчас это, вероятно, не принесет вам много пользы.

SortedList приблизится, если вы реализуете IComparable. Вы бы просто использовали Pair как ключ и значение. Вы сохраните ссылку на свою пару только дважды, поэтому это не приведет к огромным накладным расходам памяти. Но это не позаботится о дубликатах.

Есть множество способов написать это самостоятельно, но ничего из того, что полностью соответствует тому, что вам нужно. Существует несколько реализаций SortedSet с открытым исходным кодом (например, в Spring.Net). Возможно, сейчас это ваш лучший выбор.

1
ответ дан 4 December 2019 в 11:06
поделиться

SortedList было бы лучше всего, все, что вам нужно сделать, это реализовать IComparable в своем классе Pair, и он автоматически упорядочит их. Что касается удаления дубликатов, я не думаю, что Sorted list справится с этим, но вы можете унаследовать от него и добавить эту функцию.

0
ответ дан 4 December 2019 в 11:06
поделиться

вам, скорее всего, следует использовать класс Lookup, о чем Скит упоминает в своем ответе . Затем вы создаете его и получаете к нему доступ примерно так:

List<Lookup<int, int>> yourList = new List<Lookup<int, int>>();
yourList.Add(new Lookup(3,5));
//...
var list = from item in yourList
           orderby list.Key //or whatever sort criteria you want here
           select item;
//use list

Синтаксис может быть немного неправильным в 1 или 2 местах, но он должен работать.

0
ответ дан 4 December 2019 в 11:06
поделиться

Ознакомьтесь с Библиотекой общих коллекций C5 , в которой уже есть реализация, которую вы ищете, которая называется IntervalHeap или приоритетной очередью. Вот некоторая документация по нему из книги C5: IPriorityQueue

2
ответ дан 4 December 2019 в 11:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: