随风逐叶 随风逐叶
首页
  • Quick Reference (opens new window)
  • EgretEngine开发者文档 (opens new window)
  • TinaX框架
  • SSH教程
  • VSCode插件开发
关于
  • 分类
  • 标签
  • 归档

rontian

从事游戏开发10多年的老菜鸟一枚!
首页
  • Quick Reference (opens new window)
  • EgretEngine开发者文档 (opens new window)
  • TinaX框架
  • SSH教程
  • VSCode插件开发
关于
  • 分类
  • 标签
  • 归档
  • 框架简介
  • TinaX.Core
  • 基于TinaX创建一个扩展库
  • TinaX.VFS
  • TinaX.UIKit
  • TinaX.I18N
  • TinaX.Lua
  • XLua

  • Google.Protobuf
  • Lua-Protobuf
  • 一些优秀的第三方库

    • CatLib

      • 简介
      • 风格指南
      • 常见问题
      • 已知BUG
      • 更新日志
      • 服务提供者
      • 应用程序
      • 服务容器
      • 服务门面
      • 事件系统
      • 数组
      • 字符串
      • 守卫
      • 有序集
        • 构造有序集
          • 函数原型
        • Count
          • 函数原型
        • SyncRoot
          • 函数原型
        • Clear
          • 函数原型
        • Add
          • 函数原型
        • Contains
          • 函数原型
        • GetScore
          • 函数原型
        • GetRangeCount
          • 函数原型
        • Remove
          • 函数原型
        • RemoveRangeByRank
          • 函数原型
        • RemoveRangeByScore
          • 函数原型
        • GetRank
          • 函数原型
        • GetRevRank
          • 函数原型
        • GetElementRangeByRank
          • 函数原型
        • GetElementRangeByScore
          • 函数原型
        • GetElementByRank
          • 函数原型
        • GetElementByRevRank
          • 函数原型
        • GetIterator
          • 函数原型
        • First
          • 函数原型
        • Last
          • 函数原型
        • Shift
          • 函数原型
        • Pop
          • 函数原型
        • this[int]
          • 函数原型
        • ToArray
          • 函数原型
      • 环形缓冲流
      • 包装流
      • 组合流
      • 分片流
    • UniRx

    • UniTask

目录

有序集

# 有序集

有序集合和集合一样也是元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个可以被排序的分数。

有序集合是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数却可以重复。

下面的示例代码中:abc/10表示TElement为abc,TSource为10

# 构造有序集

var sorset = new SortSet<string, int>();
1

# 函数原型
SortSet<TElement,TSource>(double probable = 0.25, int maxLevel = 32);
1
SortSet<TElement,TSource>(IComparer<TScore> comparer, double probable = 0.25, int maxLevel = 32);
1
参数 描述
probable 可能出现层数的概率系数(0-1之间的数)(如:0.25即是25%)
maxLevel 最大层级,默认值32
comparer 自定义比较器,用于比较TSource

# Count

获取有序集中元素的数量。

var count = sorset.Count;
1

# 函数原型
int Count { get; }
1

# SyncRoot

同步锁。

lock(sortset.SyncRoot)
{
}
1
2
3

# 函数原型
object SyncRoot { get; }
1

# Clear

清空有序集

// [ "1/0", "2/1", "3/2"]
sortset.Clear();
// [ ]
1
2
3

# 函数原型
void Clear();
1

# Add

添加一个元素到有序集合,或者如果它已经存在则更新其分数,并排序到正确的位置上。

// [ "1/0", "2/5", "3/10" ]
sortset.Add("abc", 3);
// [ "1/0", "abc/3", "2/5", "3/10" ]
1
2
3

# 函数原型
void Add(TElement element, TScore score);
1
参数 描述
element 插入的元素
score 用于排序的分数

# Contains

判断有序集中是否存在指定元素。

// [ "a/0", "b/5", "c/10" ]
var exists = sortset.Contains("b");
// exists : true
1
2
3

# 函数原型
bool Contains(TElement element);
1
参数 描述
element 指定元素

# GetScore

返回有序集中指定元素的分数,如果元素不存在则引发KeyNotFoundException。

// [ "a/0", "b/5", "c/10" ]
var score = sortset.GetScore("b");
// score : 5
1
2
3

# 函数原型
TScore GetScore(TElement element);
1
参数 描述
element 指定元素

# GetRangeCount

获取分数区间内的元素数量。(包含min或max)

// [ "a/0", "b/10", "c/95", "d/101" ]
var num = sortset.GetRangeCount(10, 100);
// num : 2
1
2
3

# 函数原型
int GetRangeCount(TScore start, TScore end);
1
参数 描述
start 起始分数(包含)
end 结束分数(包含)

# Remove

移除有序集合中的指定的元素,如果移除失败则返回false。

// [ "a/0", "b/10", "c/95", "d/101" ]
var result = sorset.Remove("c");
// result : true
// [ "a/0", "b/10", "d/101" ]
1
2
3
4

# 函数原型
bool Remove(TElement element);
1
参数 描述
element 指定元素

# RemoveRangeByRank

根据指定的排名范围移除范围内的所有元素,并返回移除元素的数量。(包含startRank或stopRank)

// [ "a/0", "b/10", "c/95", "d/101" ]
var count = sorset.RemoveRangeByRank(1, 2);
// count : 2
// [ "a/0", "d/101" ]
1
2
3
4

# 函数原型
int RemoveRangeByRank(int startRank, int stopRank);
1
参数 描述
startRank 起始排名,以0为底,包含自身起始排名
stopRank 结束排名,以0为底,包含自身结束排名

# RemoveRangeByScore

根据指定的分数范围移除范围内的所有元素,并返回移除元素的数量。(包含startScore或stopScore)

// [ "a/0", "b/10", "c/95", "d/101" ]
var count = sorset.RemoveRangeByRank(10, 100);
// count : 2
// [ "a/0", "d/101" ]
1
2
3
4

# 函数原型
int RemoveRangeByScore(TScore startScore, TScore stopScore);
1
参数 描述
startScore 起始分数,包含起始分数
stopScore 结束分数,包含结束分数

# GetRank

获取指定元素的排名 , 有序集成员默认按照Score从小到大排序(如果自定义比较函数则按照自定义比较函数顺序为主)。如果返回-1则表示没有找到元素。

// [ "a/0", "b/10", "c/95", "d/101" ]
var rank = sorset.GetRank("c");
// rank : 2
1
2
3

# 函数原型
int GetRank(TElement element);
1
参数 描述
element 指定元素

# GetRevRank

获取指定元素的反向排名 , 有序集成员默认按照Score从大到小排序(如果自定义比较函数则按照自定义比较函数的反向顺序为主)。如果返回-1则表示没有找到元素。

// [ "a/0", "b/10", "c/95", "d/101" ]
var rank = sorset.GetRevRank("c");
// rank : 1
1
2
3

# 函数原型
int GetRevRank(TElement element);
1
参数 描述
element 指定元素

# GetElementRangeByRank

根据排名获取范围内的元素列表,排序按照排名从小到大(给定自定义比较函数则按照自定义比较函数顺序)。(包含startRank或stopRank)

// [ "a/0", "b/10", "c/95", "d/101" ]
var elements = sorset.GetElementRangeByRank(1, 2);
// elements[0] : "b/10"
// elements[1] : "c/95"
1
2
3
4

# 函数原型
TElement[] GetElementRangeByRank(int startRank, int stopRank);
1
参数 描述
startRank 起始的排名,排名以0为底,包含自身
stopRank 结束的排名,排名以0为底,包含自身

# GetElementRangeByScore

根据分数获取范围内的元素列表,排序按照排名从小到大(给定自定义比较函数则按照自定义比较函数顺序)。(包含startScore或stopScore)

// [ "a/0", "b/10", "c/95", "d/101" ]
var elements = sorset.GetElementRangeByScore(10, 100);
// elements[0] : "b/10"
// elements[1] : "c/95"
1
2
3
4

# 函数原型
TElement[] GetElementRangeByScore(TScore startScore, TScore stopScore);
1
参数 描述
startScore 起始的分数,包含自身
stopScore 结束的分数,包含自身

# GetElementByRank

根据排名获取元素,排序按照排名从小到大(给定自定义比较函数则按照自定义比较函数顺序)

// [ "a/0", "b/10", "c/95", "d/101" ]
var element = sorset.GetElementByRank(2);
// element : "c/95"
1
2
3

# 函数原型
TElement GetElementByRank(int rank);
1
参数 描述
rank 排名,排名以0为底

# GetElementByRevRank

根据排名获取元素,排序按照排名从大到小(给定自定义比较函数则按照自定义比较函数的相反顺序)

// [ "a/0", "b/10", "c/95", "d/101" ]
var element = sorset.GetElementByRevRank(2);
// element : "b/10"
1
2
3

# 函数原型
TElement GetElementByRevRank(int rank);
1
参数 描述
rank 排名,排名以0为底

# GetIterator

获取迭代器,需要传入一个值决定是否是前序遍历。

// 物理顺序:[ "a/0", "b/10", "c/95", "d/101" ]
// foreach顺序:[ "a/0", "b/10", "c/95", "d/101" ]
sorset.GetIterator();

// 物理顺序:[ "a/0", "b/10", "c/95", "d/101" ]
// foreach顺序:[ "d/101", "c/95", "b/10", "a/0" ]
sorset.GetIterator(false);
1
2
3
4
5
6
7

# 函数原型
void GetIterator(bool forward = true);
1

# First

获取第一个元素。

// [ "a/0", "b/10", "c/95", "d/101" ]
var element = sorset.First();
// element : "a/0"
1
2
3

# 函数原型
TElement First();
1

# Last

获取最后一个元素。

// [ "a/0", "b/10", "c/95", "d/101" ]
var element = sorset.Last();
// element : "d/101"
1
2
3

# 函数原型
TElement Last();
1

# Shift

移除并返回有序集头部的元素。

// [ "a/0", "b/10", "c/95", "d/101" ]
var element = sorset.Shift();
// element : "a/0"
// [ "b/10", "c/95", "d/101" ]
1
2
3
4

# 函数原型
TElement Shift();
1

# Pop

移除并返回有序集尾部的元素。

// [ "a/0", "b/10", "c/95", "d/101" ]
var element = sorset.Pop();
// element : "d/101"
// [ "a/0", "b/10", "c/95" ]
1
2
3
4

# 函数原型
TElement Pop();
1

# this[int]

获取指定排名的元素。

// [ "a/0", "b/10", "c/95", "d/101" ]
var element = sorset[2];
// element : "b/10"
1
2
3

# 函数原型
TElement this[int rank] { get; }
1
参数 描述
rank 排名,排名以0为底

# ToArray

将有序集转为数组。

// [ "a/0", "b/10", "c/95", "d/101" ]
var elements = sorset.ToArray();
// elements : [ "a", "b", "c", "d" ]
1
2
3

# 函数原型
TElement[] ToArray();
1
上次更新: 2023/10/17, 17:20:06 访问次数: 0
守卫
环形缓冲流

← 守卫 环形缓冲流→

最近更新
01
一些Shell常用的功能写法整理
10-20
02
删除git仓库submodule的步骤
10-20
03
django基本命令
10-16
更多文章>
Copyright © 2017-2025 随风逐叶
沪ICP备18008791号-1 | 沪公网安备31011502401077号

网站访问总次数: 0次
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式