Я пытаюсь сделать некоторые базовые переводы старого кода C ++ от многих лун назад, чтобы выучить Аду, и я был совершенно ошарашен тем, как сортировать вектор с помощью встроенного Generic_Sorting.Я не смог найти никаких конкретных примеров этого в действии, наиболее близкой из которых является ныне несуществующая датская вики-статья, которая выглядит так, как будто бы у нее был полный пример, но архив ее не схватил: https://web.archive.org/web/20100222010428/http://wiki.ada-dk.org/index.php/Ada.Containers.Vectors#Vectors.Generic_Sorting
Вот код, который, как я думал, должен работать по приведенной выше ссылке:
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
with Ada.Containers.Vectors; use Ada.Containers;
procedure Vectortest is
package IntegerVector is new Vectors
(Index_Type => Natural,
Element_Type => Integer);
package IVSorter is new Generic_Sorting;
IntVec : IntegerVector.Vector;
Cursor : IntegerVector.Cursor;
begin
IntVec.Append(3);
IntVec.Append(43);
IntVec.Append(34);
IntVec.Append(8);
IVSorter.Sort(Container => IntVec);
Cursor := IntegerVector.First(Input);
while IntegerVector.Has_Element(Cursor) loop
Put(IntegerVector.Element(Cursor));
IntegerVector.Next(Cursor);
end loop;
end Vectortest;
Я пробовал так много разных комбинаций use
и with
, но все, что я могу получитьразличные коды ошибок.Код выше дает Generic_Sorting is not visible
, но когда я пытаюсь явно указать with Ada.Containers.Vectors.Generic_Sorting
, я получаю ошибку "Ada.Containers.Vectors.Generic_Sorting" is not a predefined library unit
.Я понятия не имею, что я делаю здесь не так, я уверен, что это фундаментальное недопонимание того, как Ада вносит пакеты, и я надеюсь, что это поможет мне понять это немного лучше.