本文整理汇总了C#中System.Collections.Generic.PriorityQueue.Clear方法的典型用法代码示例。如果您正苦于以下问题:C# PriorityQueue.Clear方法的具体用法?C# PriorityQueue.Clear怎么用?C# PriorityQueue.Clear使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Collections.Generic.PriorityQueue
的用法示例。
在下文中一共展示了PriorityQueue.Clear方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AddRemove
public void AddRemove()
{
PriorityQueue<string, int> pq = new PriorityQueue<string, int>(10);
Assert.AreEqual<int>(10, pq.Capacity);
Assert.AreEqual<int>(0, pq.Count);
pq.Enqueue("A", 1);
Assert.AreEqual<int>(1, pq.Count);
Assert.AreEqual<string>("A", pq.Dequeue(false));
pq.Enqueue("B", 2);
Assert.AreEqual<int>(2, pq.Count);
Assert.AreEqual<string>("B", pq.Dequeue(false));
pq.Enqueue("C", 1);
Assert.AreEqual<int>(3, pq.Count);
Assert.AreEqual<string>("B", pq.Dequeue(false));
Assert.AreEqual<string>("B", pq.Dequeue());
Assert.AreEqual<string>("A", pq.Dequeue(true));
Assert.AreEqual<string>("C", pq.Dequeue());
Assert.AreEqual<int>(0, pq.Count);
Assert.AreEqual<int>(10, pq.Capacity);
pq.Enqueue("A", 1);
pq.Enqueue("B", 2);
pq.Enqueue("C", 3);
pq.Clear();
Assert.AreEqual<int>(0, pq.Count);
Assert.AreEqual<int>(10, pq.Capacity);
}
示例2: ClearTest
public void ClearTest()
{
PriorityQueue<int> actual = new PriorityQueue<int>();
actual.Clear();
Assert.AreEqual(0, actual.Count);
}
示例3: Clear_non_empty_queue
public void Clear_non_empty_queue()
{
var queue = new List<PriorityQueue<string>.Element> {new PriorityQueue<string>.Element("a", 1)};
var sut = new PriorityQueue<string>(queue);
sut.Clear();
Assert.AreEqual(0, queue.Count());
}
示例4: Clear
public void Clear()
{
var pq = new PriorityQueue<int>(new int[] { 1, 2, 3 });
int temp;
Assert.AreEqual(3, pq.Count);
Assert.IsTrue(pq.Peek(out temp));
pq.Clear();
Assert.AreEqual(0, pq.Count);
Assert.IsFalse(pq.Peek(out temp));
}
示例5: PriorityQueueClearEmptiesTheQueue
public void PriorityQueueClearEmptiesTheQueue()
{
var q = new PriorityQueue<int>();
q.Enqueue(AnyInt);
q.Enqueue(AnyInt);
q.Clear();
Assert.Equal(0, q.Count);
Assert.Throws<InvalidOperationException>(() => q.Peek());
}
示例6: WorkPriorityQueue
public void WorkPriorityQueue()
{
Student firstStudent = new Student("Alina", "Kylish", 123456789, new DateTime(1988, 4, 3));
Student secondStudent = new Student("Elena", "Kylish", 987654321, new DateTime(1987, 8, 15));
Student thirdStudent = new Student("Oleg", "Ivanov", 975312468, new DateTime(1992, 11, 20));
Student fourthStudent = new Student("Andrey", "Pavlov", 1243576890, new DateTime(1977, 8, 10));
PriorityQueue<Student> students = new PriorityQueue<Student>();
students.Enqueue(firstStudent, 0);
students.Enqueue(secondStudent, 1);
students.Enqueue(thirdStudent, 2);
students.Enqueue(fourthStudent, 0);
Console.WriteLine(students.Count());
Console.WriteLine(students.First());
Console.WriteLine(students.Last());
students.Dequeue();
Console.WriteLine(students.Count());
Console.ReadKey();
students.Clear();
students.Dequeue(); // throw exeption with message "Queue is empty. There is no value in queue"
}
示例7: WorkWithPriorityQueue
static void WorkWithPriorityQueue()
{
PriorityQueue<int> numbers = new PriorityQueue<int>();
try
{
Console.WriteLine("Count = {0}", numbers.Count());
//Console.WriteLine(numbers.First());
//Console.WriteLine(numbers.Last());
//numbers.Add(10);
// Print(numbers);
numbers.Enqueue(1, 5);
numbers.Enqueue(2, 11);
numbers.Enqueue(1, 1);
// Print(numbers);
numbers.Enqueue(2, 1);
numbers.Enqueue(3, 1);
numbers.Enqueue(15, 2);
numbers.Enqueue(25, 2);
numbers.Enqueue(21, 2);
// Print(numbers);
numbers.Enqueue(1021, 3);
numbers.Enqueue(375, 5);
numbers.Enqueue(124243323, 8);
// Print(numbers);
Console.WriteLine("Count = {0}", numbers.Count());
Console.WriteLine("Count with priority 1= {0}", numbers.GetCount(1));
Console.WriteLine("Count with priority 2= {0}", numbers.GetCount(2));
Console.WriteLine("Count with priority 3= {0}", numbers.GetCount(3));
Console.WriteLine("Count with priority 4= {0}", numbers.GetCount(4));
Console.WriteLine("Count with priority 5= {0}", numbers.GetCount(5));
Console.WriteLine("Count with priority 8= {0}", numbers.GetCount(8));
Console.WriteLine("Count with priority 11= {0}", numbers.GetCount(11));
Console.WriteLine(numbers.First());
Console.WriteLine(numbers.Last());
Console.WriteLine(numbers.Dequeue());
// Print(numbers);
Console.WriteLine(numbers.Dequeue());
Console.WriteLine(numbers.Dequeue());
Console.WriteLine(numbers.Dequeue());
// Print(numbers);
Console.WriteLine(numbers.Dequeue());
Console.WriteLine(numbers.Dequeue());
Console.WriteLine(numbers.Dequeue());
// Print(numbers);
Console.WriteLine("Count = {0}", numbers.Count());
Console.WriteLine("Count with priority 1= {0}", numbers.GetCount(1));
Console.WriteLine("Count with priority 2= {0}", numbers.GetCount(2));
Console.WriteLine("Count with priority 3= {0}", numbers.GetCount(3));
Console.WriteLine("Count with priority 4= {0}", numbers.GetCount(4));
Console.WriteLine("Count with priority 5= {0}", numbers.GetCount(5));
Console.WriteLine("Count with priority 8= {0}", numbers.GetCount(8));
Console.WriteLine("Count with priority 11= {0}", numbers.GetCount(11));
numbers.Clear();
Console.WriteLine("Count = {0}", numbers.Count<int>());
// Print(numbers);
numbers.Add(10);
numbers.Add(11);
Console.WriteLine(numbers.First());
Console.WriteLine(numbers.Last());
Console.WriteLine();
numbers.Enqueue(1, 5);
numbers.Add(5);
Print(numbers);
Console.WriteLine();
}
catch
{
Console.WriteLine("Is Exeption");
}
Console.ReadKey();
}
示例8: SendQueued
private void SendQueued (PriorityQueue<EntityUpdate, double> m_entsqueue)
{
PriorityQueueItem<EntityUpdate, double> up;
//Enqueue them all
while (m_entsqueue.TryDequeue (out up))
{
QueueEntityUpdate (up.Value);
}
m_entsqueue.Clear ();
m_lastUpdatePos = (m_presence.IsChildAgent) ?
m_presence.AbsolutePosition :
m_presence.CameraPosition;
}
示例9: WorkPriorityQueue
public void WorkPriorityQueue()
{
PriorityQueue<string> q1 = new PriorityQueue<string>();
PriorityQueue<int> q2 = new PriorityQueue<int>();
PriorityQueue<Group> q3 = new PriorityQueue<Group>();
q1.Enqueue(new List<string> { "A", "B", "C" }, 5);
q1.Enqueue(new List<string> { "F", "G", "H" }, 1);
q1.Enqueue(new List<string> { "X", "V", "B" }, 0);
q1.Enqueue(new List<string> { "Q", "W", "E" }, 1);
q1.Enqueue("Z", 1);
q2.Enqueue(new List<int> { 4, 5, 6 }, 5);
q2.Enqueue(new List<int> { 1, 2, 3 }, 1);
q2.Enqueue(new List<int> { 7, 8, 9 }, 0);
q2.Enqueue(new List<int> { 0, 3, 5 }, 1);
q2.Enqueue(9, 2);
q3.Enqueue(new Group("CS1", 7), 1);
q3.Enqueue(new Group("CS2", 14), 3);
q3.Enqueue(new Group("CS3", 24), 5);
q3.Enqueue(new Group("CS4", 31), 1);
Console.WriteLine("Dequeue in Q1: " + q1.Dequeue());
Console.WriteLine("First in Q1: " + q1.First());
Console.WriteLine("First with priority = 1 in Q1: " + q1.First(1));
Console.WriteLine("Last in Q1: " + q1.Last());
Console.WriteLine("Last with priority = 1 in Q1: " + q1.Last(1));
Console.WriteLine("Count in Q1: " + q1.Count);
Console.WriteLine("Count with priority = 1 in Q1: " + q1.GetCount(1));
Console.WriteLine("__________________________________________________");
Console.WriteLine("Dequeue in Q2: " + q2.Dequeue());
Console.WriteLine("First in Q2: " + q2.First());
Console.WriteLine("First with priority = 1 in Q2: " + q2.First(1));
Console.WriteLine("Last in Q2: " + q2.Last());
Console.WriteLine("Last with priority = 1 in Q2: " + q2.Last(1));
Console.WriteLine("Count in Q2: " + q2.Count);
Console.WriteLine("Count with priority = 1 in Q2: " + q2.GetCount(1));
Console.WriteLine("__________________________________________________");
Console.WriteLine("Dequeue in Q3: " + q3.Dequeue().Title);
Console.WriteLine("First in Q3: " + q3.First().Title);
Console.WriteLine("First with priority = 1 in Q3: " + q3.First(1).Title);
Console.WriteLine("Last in Q3: " + q3.Last().Title);
Console.WriteLine("Last with priority = 1 in Q3: " + q3.Last(1).Title);
Console.WriteLine("Count in Q3: " + q3.Count);
Console.WriteLine("Count with priority = 1 in Q3: " + q3.GetCount(1));
Console.WriteLine("__________________________________________________");
bool q = q1.Contains(new Tuple<string, int>("7", 1));
Console.WriteLine("Contains('7', 1) in Q1: " + q);
q = q1.Contains(new Tuple<string, int>("Z", 1));
Console.WriteLine("Contains('Z', 1) in Q1: " + q);
q2.Clear();
Console.WriteLine("Clear in Q2: " + q2.Count);
Tuple<string, int>[] array = new Tuple<string, int>[15];
q1.CopyTo(array, 0);
for (int i = 0; i < array.Length; i++)
{
Console.WriteLine("Array[{0}] = ( {1} {2})", i, array[i].Item2, array[i].Item1);
}
Console.ReadLine();
}
示例10: TestClear
public void TestClear()
{
var queue = new PriorityQueue<string> { "string " };
queue.Clear();
Assert.AreEqual(0, queue.Count);
}
示例11: SimulateCombat
/// <summary>
/// A discrete event simulation of combat over time.
/// </summary>
private void SimulateCombat(PriorityQueue<Spell> queue)
{
int threadID = System.Threading.Thread.CurrentThread.ManagedThreadId;
float timer = 0;
float timelimit = Options.Duration; //in seconds
float latency = (Options.Latency / 1000); //in milliseconds
DateTime start = DateTime.Now;
Debug.WriteLine("-------------------");
Debug.WriteLine(String.Format("thread:[{0}] | time: {1:0.00} - simulation starts [timelimit: {2:0.00}]", threadID, timer, timelimit));
//Trace.TraceInformation("Combat simulation started!");
//Trace.Flush();
while (queue.Count != 0)
{
//get the spell at the front of the queue
Spell spell = queue.Dequeue();
//this will be the next event that must occur in the combat timeline
//so align the simulation timer to match the scheduledtime of the event
timer = (spell.ScheduledTime);
//events that are scheduled to occur after the simulation has ended are irrelevant
if (timer >= timelimit)
{
timer = timelimit;
queue.Clear();
continue;
}
#region if this is a dot spell, check that its ready
if (spell.IsTicking)
{
//perform the tick
Debug.WriteLine(String.Format("thread:[{0}] | time: {1:0.00} - {2} ticks for {3:0} damage", threadID, timer, spell.Name, spell.TickHitDamage()));
//schedule the next tick
spell.ScheduledTime += spell.TickTime();
//add it back to the queue
queue.Enqueue(spell);
//and skip to the next iteration
continue;
}
#endregion
//get the cast time or the GCD for this ability
float casttime = spell.ExecuteTime() > 0 ? spell.ExecuteTime() : spell.GlobalCooldown();
//check if there is enough time left to cast this spell
if ((timer + casttime + latency) < timelimit)
{
//TODO: recalculate stats to account for all combat effects (e.g. +spell, +haste, +spi, +crit bonuses etc)
//spell.Stats = updatedStats;
//or
//spell.Execute(updatedStats);
//the spell lands on the target, so calculate damage and trigger any related effects
spell.Execute();
//prioritise - i.e. the next 'event' in the timeline
//(think of this as the time when the spell can be recast [for direct damage spells] or the next tick [for dots]).
spell.ScheduledTime += spell.GetTimeDelay();
timer += latency;
//append to the events history
//Events.Add(spell);
if (spell.ScheduledTime < timelimit)
{
//this spell can be re-cast before the simulation ends, so add it back to the queue
queue.Enqueue(spell);
}
else
{
//the simulation will end before this spell can be re-cast, so we wont bother adding it to the queue
Debug.WriteLine(String.Format("thread:[{0}] | time: {1:0.00} - removing {2} - the simulation ends before it can be re-casted", threadID, timer, spell.Name));
}
}
else
{
//There is still some simulation time left, but not enough to cast the current spell.
//This means that the simulation is almost finished.
//However, there might be enough time to cast the next spell in the queue ...
if (queue.Count > 0)
{
Spell next = queue.Peek();
Debug.WriteLine(String.Format("thread:[{0}] | time: {1:0.00} - not enough time to cast {2} [{3:0.00}s cast, {4:0.00}s lat] - trying next spell: {5}", threadID, timer, spell.Name, spell.ExecuteTime(), latency, next.Name));
}
else
{
Debug.WriteLine(String.Format("thread:[{0}] | time: {1:0.00} - not enough time to cast {2} - [this was the last spell in the queue]", threadID, timer, spell.Name));
}
}
//.........这里部分代码省略.........