用类指针替换 STL List 容器

Posted

技术标签:

【中文标题】用类指针替换 STL List 容器【英文标题】:Substituting STL List container with class pointer 【发布时间】:2011-03-04 09:17:40 【问题描述】:

通过以下实现,我正在尝试回答my question:

class wlist

private:
    std::list<void*> m_list;

public:

    unsigned int size ()  return m_list.size(); 
    bool empty ()  return m_list.empty(); 
    void pop_back ()  m_list.pop_back(); 
    void pop_front ()  m_list.pop_front(); 
;

class qwertyWrap : public wlist

public:
    int getNumber()  ptr->getNumber(); 
    void setNumber(int x)  ptr->setNumber(x); 

private:
    qwerty* ptr;
;

class qwerty

public:
    int getNumber();
    void setNumber(int x);
;


class asdf

public:
    int getElement();
    void setElement(int x);
private:
    /* Question */
    /* Can the following declaration be substituted by qwertyWrap keyboard ??? */
    list<qwerty*> keyboard; or qwertyWrap keyboard;
;

问题: 我可以用“qwertyWrap 键盘”代替 asdf 类中的“列表键盘”并实现与 STL 列表相同的功能吗????

【问题讨论】:

如果你不使用它,你可以用一个 int 代替 list。您实际上尝试在“键盘”上使用什么方法/概念? @BatchyX - 我打算使用 qwertyWrap 键盘同时使用类 wlist 和类 qwerty 的方法。 【参考方案1】:

没有。 A list needs more。这个链接只是一个指针。要绝对确定,您必须参考官方标准。

【讨论】:

但是由于 qwertyWrap 是从 wlist 继承的,所以 qwertyWrap 键盘不是 std::list 的对象吗??? @codebin: wlist 不是std::list,它只包含一个std::list。另外,你should not inherit from a standard container。 qwertyWrap 键盘怎么样?键盘.resize(some_number);我猜这肯定会成功。【参考方案2】:

回答我最初的问题: /* 问题 / / qwertyWrap 键盘可以代替下面的声明吗??? */ 列表键盘;或 qwertyWrap 键盘;

qwertyWrap 键盘可以代替列表键盘,并且仍然保持 std::list 功能。我也曾经实施过这个解决方案。

【讨论】:

以上是关于用类指针替换 STL List 容器的主要内容,如果未能解决你的问题,请参考以下文章

STL——容器(List)List 的概念

C++ STL list详解

STL:list

C++ STL - 容器实现

STL标准库-容器-list

STL六大组件