STL学习笔记,关于iterator的实现细节
来源:互联网 发布:iphone动态壁纸软件 编辑:程序博客网 时间:2024/05/18 02:57
为什么stl 中的 forward_iterator_tag 是这样定义?
1>struct forward_iterator_tag : public input_iterator_tag
而不是
2>struct forward_iterator_tag : public output_iterator_tag
或者
3>struct forward_iterator_tag : public input_iterator_tag,
public output_iterator_tag
我想:不继承output_iterator_tag,而是继承自input_iterator_tag的原因是.
因为mutable forward_iterator,一定可以可读.
而 const forward_iterator,则不可写.
因此,继承input_iterator_tag相比output_iterator_tag,要方便一些。
而不同时继承input_iterator_tag及output_iterator_tag的原因可能是,
这样不够简单?还是有其它的考量?
为什么不同算法的选择使用的是重载,而不是模板?
比如stl是这样做的,
1>void Fun1(input_iterator_tag)
{
cout << "HI , I am the Input Iterator Function!!!!" << endl;
}
2>而不是这样做呢?
template <typename T = input_iterator_tag?
void Fun1()
{
cout << "HI , I am the Input Iterator Function!!!!" << endl;
}
因为如果使用template,那么template就需要一个没有偏特化的Fun1.因此,
方法二不适合我们的要求。
1>struct forward_iterator_tag : public input_iterator_tag
而不是
2>struct forward_iterator_tag : public output_iterator_tag
或者
3>struct forward_iterator_tag : public input_iterator_tag,
public output_iterator_tag
我想:不继承output_iterator_tag,而是继承自input_iterator_tag的原因是.
因为mutable forward_iterator,一定可以可读.
而 const forward_iterator,则不可写.
因此,继承input_iterator_tag相比output_iterator_tag,要方便一些。
而不同时继承input_iterator_tag及output_iterator_tag的原因可能是,
这样不够简单?还是有其它的考量?
为什么不同算法的选择使用的是重载,而不是模板?
比如stl是这样做的,
1>void Fun1(input_iterator_tag)
{
cout << "HI , I am the Input Iterator Function!!!!" << endl;
}
2>而不是这样做呢?
template <typename T = input_iterator_tag?
void Fun1()
{
cout << "HI , I am the Input Iterator Function!!!!" << endl;
}
因为如果使用template,那么template就需要一个没有偏特化的Fun1.因此,
方法二不适合我们的要求。
- STL学习笔记,关于iterator的实现细节
- 【STL】iterator细节
- SGI STL学习笔记(3):copy算法实现细节
- STL iterator的自己实现
- STL iterator的自己实现
- [原创]STL Iterator,traits学习笔记
- stl 学习笔记14 Reverse Iterator
- STL学习笔记之迭代器--iterator
- 【Python 学习笔记】关于 Iterator
- 关于STL erase的iterator失效问题
- 关于STL erase的iterator失效问题
- STL 简单 iterator adapters 的实现
- STL实现细节之addressof()的实现
- c++ 学习笔记 -- 关于cout的一些小细节
- STL学习笔记:Iterator和Traits编程技巧
- STL学习笔记之迭代器--iterator(源码剖析)
- STL学习笔记--3、迭代器iterator与traits编程
- 关于STL容器实现,非侵入式容器+Iterator框架和“侵入式”容器实现的思考
- VS2005中WebService的入门教程~推荐新手学习!
- 没有虚框
- 不小心 来到了传说中的GrapeCity
- 从ASP过渡到ASP.net遗留的二十大积习
- "No Country For Old Men" Wins big at Oscars
- STL学习笔记,关于iterator的实现细节
- 在“generating artifacts”期间发生了内部错误
- 狼的爱情
- Youth means limitless possibilities.
- 《老友记》实用口语精选11
- google首页动态图片代码
- .net2.0写入文件出错
- 在Power Designer 中应用概念模型进行数据库第一阶段设计的示例(一)
- 关于系统检测到您机器上没有启动QQ的解决方法