STL图书笔记入门1.9:__STL_MEMBER_TEMPLATE

说明:本书为阅读侯捷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)”

猜你喜欢

转载自blog.csdn.net/wangping623/article/details/82285602
STL