用类指针替换 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没有。 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 容器的主要内容,如果未能解决你的问题,请参考以下文章