使用递归将数据类型放入数组中

时间:2014-02-09 05:45:40

标签: c++ arrays recursion vector

我有这个函数从包中获取数据(items [],预定义为保存6个项目)并以向量的形式返回它。我应该写一个基于递归数组的方法实现。

template <typename ItemType>
vector<ItemType> ArraySet<ItemType>::toVector() const{
vector<ItemType> setContents;
for(int i = 0; i < itemCount; ++i){
setContents.push_back(items[i]);
}
 return setContents;
}

我该怎么做呢?数据已经在一个数组中,它只是希望我将数据传输到另一个数组吗?也许我只是在思考它,但问题确实让我感到困惑。谢谢。

1 个答案:

答案 0 :(得分:0)

template <typename ItemType>
void ArraySet<ItemType>::toVector( vector<ItemType>& setContents,int item) const{
    if( item >= 0 )
    {
        toVector(setContents,item-1);
        setContents.push_back(items[item]);
    }
}

template <typename ItemType>
vector<ItemType> ArraySet<ItemType>::toVector() const{
    vector<ItemType> setContents;
    toVector(setContents,itemCount-1);
    return setContents;
}

递归函数需要有一个基本情况,这是递归结束的地方。我们想要递归数组的长度itemCount。这可以用两种方式写,这里push_back()跟随递归调用,所以我们需要以相反的顺序下降。如果它在调用之前,我们最初将从零索引开始。