【发布时间】:2017-07-30 02:06:05
【问题描述】:
我知道如何实现模板类。
但是,我不明白以下list<int>::iterator 是如何在内部实现的。我应该创建一个命名空间吗?
(基本上我想在自定义实现中使用相同的 STL 语法。)
list<int> l;
list<int>::iterator it = l.begin();
简而言之,在没有任何 STL 库的情况下让代码工作的最简单方法是什么?
这是自定义列表实现的 sn-p: (为了可读性,我省略了大部分方法。)
template <typename T>
struct list {
struct listNode {
listNode() : item(0), next(0) {}
listNode(T x) : item(x), next(0) {}
T item;
listNode* next;
};
list() : head(0),tail(0) {}
listNode* head;
listNode* tail;
};
【问题讨论】:
-
为什么不看看你的 STL 实现,看看
list::iterator是如何实现的? -
StackOverflow 不是一个让其他人编写代码的网站。您需要尝试编写它,如果遇到问题,请发布您拥有的代码并明确说明您遇到的具体问题。
-
我想我没有清楚地说明我的问题。我只是不明白符号本身的机制。我也不希望人们实现我的代码。迭代器怎么可能有一个未知的容器?
-
是什么让你认为你需要一个“未知容器”?
-
例如,list
::iterator 和 set ::iterator。我想知道 :: 符号在内部是如何工作的。
标签: c++ templates linked-list iterator