【发布时间】:2015-05-20 18:03:07
【问题描述】:
示例源代码http://www.waratuman.com/2010/06/02/vectors_in_ada/
with Ada.Containers.Vectors;
with Ada.Integer_Text_IO;
with Ada.Text_IO;
use Ada.Containers;
procedure Euler3 is
package Integer_Vectors is new Vectors(Natural, Integer);
Numbers : Integer_Vectors.Vector;
Cursor : Integer_Vectors.Cursor;
begin
-- Get some content
Integer_Vectors.Append(Numbers, 43);
Integer_Vectors.Append(Numbers, 44);
Integer_Vectors.Append(Numbers, 45);
Cursor := Integer_Vectors.First(Numbers);
while Integer_Vectors.Has_Element(Cursor) loop
Ada.Integer_Text_IO.Put(Integer_Vectors.Element(Cursor));
Ada.Text_IO.New_Line;
Integer_Vectors.Next(Cursor);
end loop;
end Euler3;
如何从上面的代码中得到Integer_Vectors的长度?
【问题讨论】:
-
请注意,参考文献以这个例子说明了 Ada 中迭代的尴尬程度; Ada2012 通过new generalized iterators、
for N of Numbers loop ...改进了这一点 -
哇,太好了^_^
-
但是
cursor版本(1-5 秒)比for of(16-24 秒)kokizzu.blogspot.com/2015/03/… 快很多 -
如果你浏览过语言参考手册中描述包
Ada.Containers.Vectors的部分,那应该很明显了。
标签: ada