- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我查看了一些 STL 实现的来源(SGI、STLport、libc++),发现了一些似乎对所有或大多数实现都通用的设计模式,但我找不到理由。我认为一定有一个很好的共鸣,并想知道它是什么:
许多类,包括 vector
和 list_iterator
等,被实现为 2 个类,例如list_iterator_base
具有部分功能,然后 list_iterator
继承了 list_iterator_base
的其余部分。重点是什么?这似乎可以在一节课中轻松完成。
迭代器似乎没有使用iterator
类。使用它会有一些性能损失吗?
这是我快速浏览时发现的 2 个问题。如果有人知道解释 STL 实现的实现原理的好资源,我会很高兴听到它。
最佳答案
答案很简单:
std::iterator<...>
并没有真正起作用:在基类中定义的类型取决于模板参数,在派生自此类基类的类模板中不能直接访问。也就是说,类型需要使用基类进行限定,并且需要使用 typename
标记为类型。 .更糟糕的是,理论上用户可以分配派生类的对象并通过指向 std::iterator<...>
的指针释放它们。 (是的,那将是一件愚蠢的事情)。也就是说,没有好处,但有潜在的缺点,即最好避免。也就是说,我不知道有任何好的资源涵盖实现通用库的技术。 STL 实现中应用的大部分细节都是由多人独立发明的,但关于泛型编程的文献仍然相对匮乏。我认为任何描述 STL 的论文实际上都没有讨论实现技术:它们通常专注于设计细节。鉴于似乎只有极少数人了解 STL 是什么,因此作者倾向于专注于描述 STL 是什么而不是如何实现它也就不足为奇了。
关于c++ - STL背后的设计原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13278728/
我正在寻找匹配 /(?=\W)(gimme)(?=\W)/gi 或类似的东西。 \W 应该是零宽度字符来包围我的实际匹配项。 也许有一些背景。我想用添加的文字填充替换某些单词(总是 \w+),但前提是
如何在不使用 Intent 连接到 VPN 服务的情况下以编程方式检测流量是否正在通过 VPN。有系统调用吗? 最佳答案 这个有效: private boolean checkVPN() {
我是一名优秀的程序员,十分优秀!