我们在应用程序中使用的数据结构通常包含很多 处理各种类型的信息和 信息可以属于多个独立的数据结构。对于 例如,人事数据文件可能包含带有名称的记录, 关于员工的地址和各种其他信息; 每条记录可能需要属于一个数据结构进行搜索 对于特定的员工,对于另一个用于回答的数据结构 统计查询,等等。
尽管这种多样性和复杂性,还有一大类计算能力 应用程序涉及数据对象的通用操作和需求 访问有限数量的与他们相关的信息 具体原因。许多需要的操作是a 基本计算程序的自然生长,所以它们是 需要广泛的应用程序。许多根本 算法可以有效地应用于构建图层的任务 抽象,可以为客户端程序提供能力 有效地执行这样的操作。因此我们将考虑进来 详细介绍了与此类构造相关的众多ADT。 它们定义了抽象对象集合的各种操作, 独立于对象的类型。
上面的文字是由Robert Sedwick在Algorithms in C ++中的抽象数据类型的上下文中描述的。
我的问题是
作者的意思是“一大类计算应用程序涉及数据对象的通用操作,并且需要访问与其相关的信息,原因有限。” ?这里作者通过通用操作和有限数量的具体原因来表示什么?
作者的意思是“构建一个抽象层”,以便客户端程序可以高效地执行这些操作“?
谢谢!
答案 0 :(得分:0)
我认为抽象接口是指,它们的正确实现允许客户端不会沉溺于实现的细节,因此有效地执行操作,并对从抽象类派生的不同类型的泛型对象执行操作。此外,我认为这里的模板是通用编程的核心
答案 1 :(得分:0)
通过创建程序(algorightms)工作的对象,您可以将实际问题转换为计算机可以理解的内容。通常不仅仅是做这项工作的方式;选择不仅在计算方面有效的模型,而且还允许代码可读且易于维护,这一点非常重要。
由于通用算法只能在通用数据上运行,因此访问代码的抽象层意味着您可以有效地更改算法,而不必过多地关注数据接口。
只要接口保持不变,就可以更改实现。这意味着代码(或设计)已完成并专注于一项任务。避免各种程序部分之间的复杂链接,可以使解决方案更容易测试,调试和扩展。
答案 2 :(得分:0)
通用操作是指编写可以处理某些数据而无需明确知道数据类型的代码,以及如何操作它。
考虑来自C ++库的std :: find:
template<class InputIterator, class T>
InputIterator find(InputIterator first, InputIterator last, const T& value)
{
for ( ; first != last; ++first)
if (*first == value)
return first;
return last;
}
此代码适用于任何可以提供迭代器(不仅仅是容器)的序列,以及任何类型T
,可以通过引用传递并使用==
进行比较。
您无需了解T
。
答案 3 :(得分:0)
他基本上描述了STL的作用。我并不讨厌Sedgewick,这是一部经典之作,我在1986年买了我的副本,但他正在写一个非常简单的世界。通过各种方法使用算法,但我会调整与通用软件工程有关的任何内容并阅读更新的内容。