通用类库 - 错误、说明、问题、使用功能和建议 - 页 9

 
Regex Konow
我应该补充一下,我在解决方案中使用了两个函数和一个数组。没有指针或连接。

你的解决方案是不好的。你已经有了一个100x100x255的数组,即2,550,000个单元格,预留给100个单词!你可以用这个数组来做什么?而如果你有10 000 000个字,你将达到32位系统的内存限制。而如果有超过100次的碰撞呢?有多少个单词以字母S开头,有多少个以字母P开头?- 显然超过100个,那么为什么我们不应该储存它们?

 
fxsaber:

也就是说,你必须在每个任务的字典大小(RAM)和哈希函数的计算复杂性(CPU)之间找到合适的平衡。

这就对了。我将在下面写到哈希函数的要求。
 
fxsaber:

在写完这些之后,我突然想到,以线程中讨论的方式来存储ticks是没有实际任务的。它们按时间排序并存储在一个简单的数组中。

这与历史订单/上诉是一样的。而且,从HistorySelect来看,它们是按时间存储在一个数组中。而且我认为,(在目前的实施中)没有任何东西可以让人通过票据或ID来搜索记录。

而这一切都是因为在被命名的历史案例中,做出这样的事情是不合理的。简单的阵列就足够用于练习了。

我想是的。
 
fxsaber:

请简明扼要地写,不要用帽子和多余的实体来破坏气氛。

这是一个训练的例子,所以请原谅我,但不是。但我要指出的是,战斗版的代码就是这样写的:尽可能的简洁和高效(就是你喜欢的方式)。在培训实例中,代码是为每个人写的,它尽可能的简单和清晰,这样即使是一个不成熟的用户也能理解。

S.W. Caps, OK, I'll clean it up.
 
Vasiliy Sokolov:

然而,我想指出的是,战斗版的代码就是这样写的:尽可能的简洁和高效(就是你喜欢的方式)。


在现实中,在项目 上,代码是根据 "行为准则 "编写的。
而这样的变体,如fxsaber的 情况,并没有使用。

bool Contains(string word)
{
   return words[word[0]-'a'] != NULL;
}

原因很平庸--不可能方便地进行调试。

 
瓦西里-索科洛夫

你的解决方案是不好的。你已经有了一个100x100x255的数组,即2,550,000个单元格,预留给100个单词!你可以用这个数组来做什么?而如果你有10 000 000个字,你将达到32位系统的内存限制。而如果有超过100次的碰撞呢?有多少个单词以字母S开头,有多少个以字母P开头?- 肯定超过100个,那么为什么我们不应该储存它们呢?


我已经回来研究ReTeg Konow 的建议代码。
对不起,但这完全是垃圾,而且完全不了解一般的哈希主题,更不用说哈希表了。
你可以去hubr,至少可以熟悉一下哈希值的主题,为什么要制造这个车轮上的棺材呢?

是的,要体面地实现你自己的哈希表,这不是一件小事。
但在拟议的法规中,甚至不存在任何理解的问题。

 

朋友。我看到这个话题已经安静下来了。

我不想干扰讨论,所以我自愿退出。

图书馆里可能有很多有趣的东西。

请自由讨论。

(我的解决方案在任何情况下都更糟糕,因为它的速度要慢3.2倍)。

 
Vasiliy Sokolov:

你的解决方案是不好的。你已经有了一个100x100x255的数组,即2,550,000个单元格,预留给100个单词!你可以用这个数组来做什么?而如果你有10 000 000个字,你将达到32位系统的内存限制。而如果有超过100次的碰撞呢?有多少个单词以字母S开头,有多少个以字母P开头?- 显然超过100个,那么为什么我们不应该储存它们?

数组的大小 可以很容易地改变以适应字典的大小。

我不考虑无尽的变体。

 
谢尔盖-迪尤布利 克。


回头研究了Retag Konow 代码的建议代码。
对不起,这完全是垃圾,而且完全误解了一般的哈希值主题,更不用说哈希表。
为什么要制造这个车轮上的棺材,而你可以去hubr,至少让自己熟悉一下哈希的主题。

是的,要体面地实现你自己的哈希表,这不是一件小事。
但在提供的代码中,甚至不存在任何理解的问题。

这个代码是开始。没有人阻止你进一步发展。
 
瓦西里-索科洛夫

你的解决方案是不好的。你已经有了一个100x100x255的数组,即2,550,000个单元格,预留给100个单词!你可以用这个数组来做什么?而如果你有10 000 000个字,你将达到32位系统的内存限制。 而如果有超过100次的碰撞呢?有 多少个单词以字母S开头,有多少个以字母P开头?- 显然超过100个,那么为什么我们不应该储存它们?

在我的版本中,不太可能有超过100次的碰撞。你能想到超过100个以一个字母开头且字母数量相同的单词吗?

("文本1"、"文本2"、"文本3"、"文本4"、"文本5 "等变体除外...)