我有这个函数从包中获取数据(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;
}
我该怎么做呢?数据已经在一个数组中,它只是希望我将数据传输到另一个数组吗?也许我只是在思考它,但问题确实让我感到困惑。谢谢。
答案 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()
跟随递归调用,所以我们需要以相反的顺序下降。如果它在调用之前,我们最初将从零索引开始。