首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将ada.Containers.Vector转换为数组

将ada.Containers.Vector转换为数组
EN

Stack Overflow用户
提问于 2016-10-28 09:42:28
回答 1查看 831关注 0票数 2

如果我已经定义了一个数组类型,如

代码语言:javascript
复制
type Integer_Array is array(Natural range <>) of Integer;

还可以使用包Ada.Containers.Vectors作为

代码语言:javascript
复制
package Integer_Vectors is new Ada.Containers.Vectors(
    Element_Type => Integer,
    Index_Type => Natural);
use Integer_Vectors;

如何实现以下功能?

代码语言:javascript
复制
function To_Integer_Array(V : Integer_Vectors.Vector) return Integer_Array;

我到目前为止有什么

从概念上来说,这似乎很简单:

  1. 将Temp_Arr声明为Integer_Array,容量为V.Length
  2. 在V上迭代并将所有元素复制到Temp_Arr
  3. 返回Temp_Arr

第一步是让我头疼。我试过:

代码语言:javascript
复制
function To_Integer_Array(V: Integer_Vectors.Vector) return Integer_Array is
    Temp_Arr: Integer_Array(1..V.Length);
begin
    -- Todo: copy values here
    return Temp_Arr;
end To_Integer_Array;

这会让你

代码语言:javascript
复制
expected type "Standard.Integer"
found type "Ada.Containers.Count_Type"

虽然这个错误是完全有意义的,但我不确定如何解决它。

有没有一种将Ada.Containers.Count_Type转换为Standard.Integer的方法?会有另一种方法从Integer_Array中创建Integer_Vector吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-28 11:11:05

多亏了Brian,声明现在生效了。函数的正确实现如下所示:

代码语言:javascript
复制
function To_Integer_Array(V: Integer_Vector) return Integer_Array is
    Temp_Arr: Integer_Array(1..Natural(V.Length));
begin
    for I in Temp_Arr'Range loop
        Temp_Arr(I) := V.Element(I);
    end loop;
    return Temp_Arr;
end To_Integer_Array;
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40302338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档