Ada 中队列的向量

Vector of Queues in Ada

Vector的Element_Type没有限制,而Queue有。如何组织队列向量?

   with Ada.Containers.Unbounded_Synchronized_Queues;
   with Ada.Containers.Synchronized_Queue_Interfaces;
   with Ada.Containers.Vectors;

   package Queue_Vector is

      package Integer_Queue_Interfaces is new
        Ada.Containers.Synchronized_Queue_Interfaces
          (Element_Type => Integer);

      package Integer_Queues is new
        Ada.Containers.Unbounded_Synchronized_Queues
          (Queue_Interfaces => Integer_Queue_Interfaces);

      package Queue_Vectors is new
        Ada.Containers.Vectors
          (Index_Type   => Positive,
           Element_Type => Integer_Queues.Queue);

   end Queue_Vector;

这很不舒服,但编译:

    type Integer_Queue_P is access Integer_Queues.Queue;

    package Queue_Vectors is new
      Ada.Containers.Vectors
        (Index_Type   => Positive,
         Element_Type => Integer_Queue_P);

您可能希望从 Integer_Queue_P 中创建一个智能指针(如 here),以确保实际的 Queue 在覆盖或删除Vector.

我没有考虑到在未受保护的向量中访问受保护队列是没有意义的,向量也必须被保护。所以我制作了一个包含 Hashed_Map 个 Vector 的安全对象来解决我的问题。