如何在Ada中为向量实现泛型_排序? 我试图从许多月以前对旧C++代码进行一些基本的翻译来学习艾达,而我已经完全不知道如何使用内置的GyrGySQL排序来排序向量。我还没有找到任何具体的例子,最近的是一篇现在已经不存在的丹麦维基文章,它看起来应该有一个完整的例子,但档案馆没有抓住它:

如何在Ada中为向量实现泛型_排序? 我试图从许多月以前对旧C++代码进行一些基本的翻译来学习艾达,而我已经完全不知道如何使用内置的GyrGySQL排序来排序向量。我还没有找到任何具体的例子,最近的是一篇现在已经不存在的丹麦维基文章,它看起来应该有一个完整的例子,但档案馆没有抓住它:,ada,gnat,gnat-gps,ada2012,Ada,Gnat,Gnat Gps,Ada2012,下面是代码,我认为它应该在上面的链接中工作: 带有Ada.Integer\u Text\u IO;使用Ada.Integer\u Text\u IO; 使用Ada.Strings.Unbounded;使用Ada.Strings.Unbounded; 使用Ada.Containers.Vectors;使用Ada容器; 程序测试是 包积分是一种新的矢量 (索引类型=>自然, 元素(类型=>整数); 包装IV分拣机是一种新型的通用分拣机; IntVec:IntegerVector.Vector; 游标

下面是代码,我认为它应该在上面的链接中工作:

带有Ada.Integer\u Text\u IO;使用Ada.Integer\u Text\u IO;
使用Ada.Strings.Unbounded;使用Ada.Strings.Unbounded;
使用Ada.Containers.Vectors;使用Ada容器;
程序测试是
包积分是一种新的矢量
(索引类型=>自然,
元素(类型=>整数);
包装IV分拣机是一种新型的通用分拣机;
IntVec:IntegerVector.Vector;
游标:IntegerVector.Cursor;
开始
IntVec.Append(3);
IntVec.Append(43);
IntVec.Append(34);
IntVec.Append(8);
IVSorter.Sort(Container=>IntVec);
游标:=IntegerVector.First(输入);
而IntegerVector.Has_元素(游标)循环
Put(IntegerVector.Element(游标));
IntegerVector.Next(光标);
端环;
结束向量测试;

我已经尝试了很多不同的组合
use
with
,但我能得到的只是各种错误代码。上面的代码给出了
Generic\u排序是不可见的
,但是当我试图用Ada.Containers.Vectors.Generic\u排序显式声明
时,我得到了错误
“Ada.Containers.Vectors.Generic\u排序”不是预定义的库单元
。我不知道我在这里做错了什么,我确信这是对Ada引入包的方式的一个根本性误解,我希望明确这一点能帮助我更好地理解它。

泛型\u排序是
Ada.Containers.Vectors
的一个内部包,不能用
显式地
(正如您所发现的)。由于
Ada.Containers.Vectors
本身就是一个通用包,
generic\u Sorting
Ada.Containers.Vectors
实例化的一个内部包。因此,您可以通过前缀实例名称来访问它:

package IVSorter is new IntegerVector.Generic_Sorting;

就这样,非常感谢你,我没有足够的代表投票给你,但我已经接受了这个解决方案,我无法告诉你我有多感激它!这一切都很有道理,我知道当我读到答案时我会用手掌!