Containers 容器清除程序问题

Containers 容器清除程序问题,containers,ada,Containers,Ada,有人对Ada.Containers包装中的清除程序有问题吗?它似乎将容器的长度设置为零,但一旦使用Append过程添加了另一个元素,容器的内容就会重新出现(即,它们永远不会被删除)。我尝试了Ada.Containers.Doubly_Linked_列表和Ada.Containers.Vectors。两个容器具有相同的行为。有什么想法吗?在我看来,您似乎在编译器对该包的实现中发现了一个bug。我会报告的。我知道了。愚蠢的艾达。你必须小心引用数据的方式。Ada喜欢返回数据的副本,而不是对数据的引用。

有人对Ada.Containers包装中的清除程序有问题吗?它似乎将容器的长度设置为零,但一旦使用Append过程添加了另一个元素,容器的内容就会重新出现(即,它们永远不会被删除)。我尝试了Ada.Containers.Doubly_Linked_列表和Ada.Containers.Vectors。两个容器具有相同的行为。有什么想法吗?

在我看来,您似乎在编译器对该包的实现中发现了一个bug。我会报告的。

我知道了。愚蠢的艾达。你必须小心引用数据的方式。Ada喜欢返回数据的副本,而不是对数据的引用。

什么编译器?什么站台?我刚刚看过GNATGPL2009的Ada.Containers.Vectors的包体,看起来还不错。我还对向量的行为进行了快速检查,结果也不错。实际上,你的Ada编译器可以随意返回数据。如果需要引用传递机制,则必须使用“access”方法传递参数,或者应改为使用传递对数据类型的引用。我认为唯一的例外是标记类型,它们必须通过引用传递。