函数配置器的举例

原创 2016年05月30日 10:55:27

配置器的定义:

在c++STL中的头文件<memory>中有标准适配器的声明如下:

namespace std
{
	template < class T>
	class allocator
	{
	public:
		//型别
		typedef size_t size_type;
		typedef ptrdiff_t difference_type;
		typedef T* pointer;
		typedef const T * const_pointer;
		typedef T & reference;
		typedef const T & const_reference;
		typedef T value;
		template <class U>struct rebind
		{
			typedef allocator<U>other;
		};
	public:
		//配置类的成员函数
		allocator()throw();
		allocator(const allocator&)throw();
		template<class U>
		allocator(const allocator<U>&)throw();
		~allocator()throw();

		pointer address(reference value)const;
		const_pointer address(const_reference value)const;
		size_type max_size()const throw();
		pointer allocator(size_type num, allocator<void>::const_pointer hint = 0);
		void construct(pointer p, const T&value);
		void destroy(pointer p);
		void deallocator(pointer p, size_type num);
	};
}

举例:

#include<memory>
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
template<class T>
void printV(const vector<T>&v)//输出容器
{
	copy(v.begin(), v.end(), ostream_iterator<T>(cout, ","));
	cout << endl;
}


void printAl( allocator<int>::pointer vv, size_t num)//输出配置器
{
	int i;
	for (i = 0; i < num; i++)
	{
		cout << vv[i] << ",";
	}
	cout << endl;
}

void main()
{
	vector<int>vt;
	vector<int>::iterator vtP;
	vector<int>::allocator_type vtA;

	allocator<int>Al;
	allocator<int>::pointer AlP;
	allocator<int>::const_pointer AlCP;

	int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
	vt.assign(a, a + 10);
	printV(vt);
	int k = 6;
	AlCP = vtA.address(*find(vt.begin(), vt.end(), k)); //使用address
	cout << *AlCP << endl;

	AlP = Al.allocate(10);//分配内存
	int i = 0;
	for (auto b : a)
	{
		AlP[i++] = b;
	}
	printAl(AlP, 10);
	Al.deallocate(AlP, 10);//释放内存

	AlP = vtA.address(*find(vt.begin(), vt.end(), k));
	Al.destroy(AlP);
	Al.construct(AlP, 12);//修改数据
    printV(vt);

	allocator<int>::size_type  size;
	size = Al.max_size();
	cout << size << endl;
	
	system("pause");
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

s函数应用举例

  • 2012-04-26 07:32
  • 34KB
  • 下载

IE8兼容js原生函数问题(举例map,filter,indexof)

兼容问题后续--------- 一些JS的原生函数也不被IE8支持的解决办法(其实就是重写方法): 类似于数组的indeOf()方法: if (!Array.prototype.index...
  • shya_
  • shya_
  • 2017-03-17 14:43
  • 298

Oracle常用的查询与函数举例

针对scott用户查询--1、最常用 select * from emp; select * from dept; select * from salgrade; --2、查询每个员工所在的部门(内连...
  • jhonz
  • jhonz
  • 2016-10-11 16:55
  • 563

Main函数中的argc和argv应用举例

尽管之前写过一篇关于argc,argv方面的文章(http://blog.csdn.net/carson2005/article/details/5766192)但依然有朋友搞不太清楚。所以,这里,我...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)