gpt4 book ai didi

c# - 高效的数据模式来存储三个相关的项目以便于访问

转载 作者:太空宇宙 更新时间:2023-11-03 22:01:36 26 4
gpt4 key购买 nike

我在为一个 word 自动化项目设计一种有效的数据存储方法来存储一些书签元素时遇到了一些麻烦。这是我需要做的。我需要将所有 bookmarkstart 和 bookmark end 以及书签 id 存储在一个整洁的数据结构中,这样我就可以访问这三个对象中的任何一个,只要其中一个对象具有最低的运行时复杂性。例如,如果我不需要存储 id,我可以只制作一个字典并使用书签开头作为键,将书签结尾用作值以获得 O(1) 的访问时间。但是,是否存在一种合乎逻辑、简单且有效的结构来将所有这三个项目耦合在一起来实现此功能?

谢谢

最佳答案

如果书签开始和书签结束都是从零开始的整数,您可以将它们存储在简单的数组中。如果你使用字典,那么它不再是 O(1),而是非常接近它。

创建一个包含 3 个字段的基本对象,然后将 2 个数组作为实际数据的索引。

public class Bookmark
{
public int ID { get; set; }
public int Start { get; set; }
public int End { get; set; }
}

// setting up your bookmark indices
const int NumBookmarks = 200;
Bookmark[] startIndices = new Bookmark[NumBookmarks];
Bookmark[] endIndices = new Bookmark[NumBookmarks];

// add a new bookmark
Bookmark myBookmark = new Bookmark(){ID=5, Start=10, End=30};
startIndices[myBookmark.Start] = myBookmark;
endIndices[myBookmark.End] = myBookmark;

// get a bookmark
Bookmark myBookmark = startIndices[10];

当然,使用数组可能是最不灵活的,但速度最快。

如果不需要绝对速度,可以创建一个List,然后使用Find方法。

Bookmark myBookmark = myBookmarks.Find(x=>x.Start==10);

关于c# - 高效的数据模式来存储三个相关的项目以便于访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9891409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com