说明:本书为阅读侯捷STL源码剖析时所所看所想,纯属记录,而且很多时候,我的记录早就偏离了原书章节的主题。比如原书第1章1.9节中的主题是测试类模板里面是否可以定义函数模板,但是我却把主题偏离到了迭代器部分,这些纯属个人想法,所以不要大惊小怪;又例如,我在编译书中源码的过程中,发现VS2017编译不通过,顺手加了一些代码,以便让编译通过,这些新加的代码大多数没有任何意义,目的只是让代码编译通过而已。
下面是源码:
#include "stdafx.h"
#include <iostream>
using namespace std;
class alloc{};
template <class T, class Alloc = alloc>
class vector {
public:
typedef T value_type;
typedef value_type* iterator;
iterator begin()
{
return &arr[0];
}
template <class I>
void insert(iterator position, I first, I last)
{
cout << "insert()" << endl;
}
private:
value_type arr[5];
};
int main()
{
int ia[5] = { 0,1,2,3,4 };
vector<int> x;
vector<int>::iterator ite = x.begin();
x.insert(ite, ia, ia+5);
return 0;
}
1. vs2017中的运行窗口一闪而过的问题,这是因为程序执行到最后退出了,窗口当然退出了,就有两种办法,第一,在程序的结尾添加while循环,或者调用系统函数system("pause");第二种方法当然是模拟下linux的终端,终端不是窗口,当然不会退出了,vs下设置窗口终端的步骤如下:1.右键单击当前工程-属性 2.选择配置属性-链接器-系统 3.更改系统选项中的“子系统”配置,选择下拉菜单的第一个“控制台 (/SUBSYSTEM:CONSOLE)”