C#使用PriorityQueue

 

#pragma once
#include<cliext/queue>
#include<cliext/vector>
using namespace cliext;
using namespace System;
using namespace Microsoft::VisualC::StlClr;
namespace ClassLibrary2
{
    public ref class Class1
    {
    public:
        static IPriorityQueue<Object ^, IVector<Object ^> ^> ^PriorityQueue(priority_queue<Object ^>::value_compare ^comp)
        {
            return gcnew priority_queue<Object ^>(comp);
        }
    };
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static ClassLibrary2.Class1;
using Microsoft.VisualC.StlClr;

namespace ConsoleApplication2
{
    class Program
    {
        static bool comp1(object o1,object o2)
        {
            return (int)o1 < (int)o2;
        }
        static void Main(string[] args)
        {
            Random rnd = new Random();
            IPriorityQueue<object, IVector<object>> IPri = PriorityQueue(comp1);
            for (int i = 0; i < 10; i++)
                IPri.push(rnd.Next());
            for(int i=0;i<10;i++)
            {
                Console.Write(IPri.top_item.ToString() + " ");
                IPri.pop();
            }
            Console.ReadKey();
        }
    }
}

 

转载于:https://www.cnblogs.com/JebediahKerman/p/6130315.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# 中,`PriorityQueue` 是 .NET Framework 中的一个内置数据结构,它是一种基于优先级的队列,其中元素的添加顺序取决于它们的优先级。当你需要按照特定的顺序处理任务或元素时,`PriorityQueue` 可以非常有用,例如在调度、事件处理或其他需要按优先级处理任务的场景。 下面是 `PriorityQueue` 在 C# 中的基本用法: 1. 创建 `PriorityQueue`:你可以使用泛型指定要存储的数据类型和默认的比较器(如果需要自定义排序)。 ```csharp PriorityQueue<int> queue = new PriorityQueue<int>(); ``` 2. 添加元素:使用 `Enqueue` 方法添加元素,`PriorityQueue` 会自动根据元素的默认或自定义比较器进行排序。 ```csharp queue.Enqueue(10); queue.Enqueue(5); queue.Enqueue(15); ``` 3. 删除并获取最高优先级元素:使用 `Peek` 方法查看当前队列中的最高优先级元素,但不删除它;`Dequeue` 方法则用于获取并移除最高优先级的元素。 ```csharp int highestPriority = queue.Peek(); // 返回 5 int removedElement = queue.Dequeue(); // 返回 5,现在队列里只剩 10 和 15 ``` 4. 自定义比较器:如果你想要用自定义的比较逻辑,可以在创建 `PriorityQueue` 时提供一个实现了 `IComparer<T>` 接口的类实例。 ```csharp class CustomComparator : IComparer<int> { // 实现 Compare 方法 } PriorityQueue<int, CustomComparator> customQueue = new PriorityQueue<int, CustomComparator>(new CustomComparator()); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值