Помещение инкрементного оператора после переменной означает, что инкремент и присвоение происходят после , выражение оценено... так исходный оператор x = x ++; переводит в 1. Оцените x и сохраните значение в tyransient памяти... Теперь выполните код, требовавшийся ++ оператор.... (шаги 2 & 3) 2. Инкрементное значение x (в переходной памяти) 3. Присвойте Увеличенное значение месту хранения x... Теперь, продолжите отдых выполнения строки, налево, существует = знак... 5. Поэтому присвойте значение, сохраненное на Шаге 1 (неувеличенное значение) к выражению на левом из = знак..., который является x
Когда вы вызываете [AboutViewController init]
, ожидается, что он вызовет некоторую форму [super init]
, которая является синонимом для [Инициализация UIViewController]
. Когда это произойдет, ваш контроллер представления будет автоматически искать файл пера с именем (в вашем случае) AboutViewController.xib
. Если он находит этот файл, он загружает его содержимое в ваш контроллер представления для вас.
Таким образом, все, что вам нужно сделать, это инициализировать ваш контроллер представления и убедиться, что он имеет то же имя, что и связанный файл пера.
] Если вы хотите загрузить файл пера с другим именем в контроллер представления, вы можете явно вызвать initWithNibName: bundle:
с именем любого понравившегося файла пера.
Если стандартный init ( с одноименным файлом пера) не работает для вас, Меня интересует только первое значение в списке, как определено алгоритм сортировки в любой момент.
Похоже, вам не нужна сортированная очередь, а Priority Queue . Если производительность является проблемой, то PQ, безусловно, будет быстрее, O (log n) против O (n). Но проблема с удалением дубликатов потребовала бы, чтобы вы также сохранили параллельный HashSet <>.
Перейдите по этой ссылке, чтобы решить вашу проблему.
Принимает всего 10 минут, чтобы завершить пошаговое руководство.
В настоящее время в .NET нет ничего, что удовлетворяло бы всем вашим требованиям. В .NET 4.0 есть класс SortedSet. Я понимаю, что сейчас это, вероятно, не принесет вам много пользы.
SortedList приблизится, если вы реализуете IComparable. Вы бы просто использовали Pair как ключ и значение. Вы сохраните ссылку на свою пару только дважды, поэтому это не приведет к огромным накладным расходам памяти. Но это не позаботится о дубликатах.
Есть множество способов написать это самостоятельно, но ничего из того, что полностью соответствует тому, что вам нужно. Существует несколько реализаций SortedSet с открытым исходным кодом (например, в Spring.Net). Возможно, сейчас это ваш лучший выбор.
SortedList было бы лучше всего, все, что вам нужно сделать, это реализовать IComparable в своем классе Pair, и он автоматически упорядочит их. Что касается удаления дубликатов, я не думаю, что Sorted list справится с этим, но вы можете унаследовать от него и добавить эту функцию.
вам, скорее всего, следует использовать класс 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 местах, но он должен работать.
Ознакомьтесь с Библиотекой общих коллекций C5 , в которой уже есть реализация, которую вы ищете, которая называется IntervalHeap
или приоритетной очередью. Вот некоторая документация по нему из книги C5: IPriorityQueue