如何处理模板返回?

时间:2014-10-10 03:00:43

标签: c++ data-structures linked-list

也许是因为我是一个更新的人,无法定义它属于哪种问题。所以搜索后我找不到想要的结果。

这是我用C ++模板实现的链表

template<class T> struct Node
{
    T value;
    Node<T>* pre;
    Node<T>* next;

};
template<class T> class Flist
{
    private:
        Node<T>* front;
        Node<T>* end; 
        int count;

    public:
        Flist();   
        ~Flist();
        Flist(const Flist& C_list); 
        inline void Deeply_Copy(const Flist& Copylist);
        bool Isempty() const;
        int Listsize() const;
        Node<T>& Listfront()const;
        Node<T>& Listend() const;
        void push_front(T N);
        void push_back(T N);
        void del_front();
        void del_back();
        Node<T>* Listfind(T x); 
        T ShowKey(int n);   

};


template<class T> T Flist<T>::ShowKey(int n)
{
    if (front == 0)
        {
            cout << "there is no element is the list.." << endl;
            return ???;
        }
    Node<T>* temp = front;
    while(n--)
    {
        temp = temp->next;
    }
    return temp->value;

}

函数ShowKey(int n)我希望它返回(不仅仅是显示)第n个元素的值,但如果列表为空,我不知道要返回什么。我不想使用exit来停止程序。有没有更简洁的方法来处理这种情况?

2 个答案:

答案 0 :(得分:2)

我将功能签名更改为

bool showKey(int n, T& value);

并使用它来设置值变量,如果条目n中存在条目则返回true,如果条目不存在则返回false(并保持值不变)。

答案 1 :(得分:0)

你最好的选择可能是抛出异常; std::domain_errorstd::range_error可能适用。