社区
C++ 语言
帖子详情
如何改变STL的默认模板参数
to_ker
2011-08-02 09:12:40
STL中的vector有一个默认的内存分配器, 我想把它改变一下,形成新的模板类型,哪位高手指教一下怎么做
原有的大概这样
templete<class Tx, class Ty = allocator<tx>>
class vector
{
........
}
我想用这种方式定义一种新的数据类型
typedfef vector<Tx, MyAllocator<Tx>> MyVector
试了很多种办法都编绎不过
不想用MyVector继承vector的方法
...全文
152
14
打赏
收藏
如何改变STL的默认模板参数
STL中的vector有一个默认的内存分配器, 我想把它改变一下,形成新的模板类型,哪位高手指教一下怎么做 原有的大概这样 templete<class Tx, class Ty = allocator> class vector { ........ } 我想用这种方式定义一种新的数据类型 typedfef vector<Tx, MyAllocator> MyVector 试了很多种办法都编绎不过 不想用MyVector继承vector的方法
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
未注销
2011-08-03
打赏
举报
回复
看下源码。
Michael_Xie
2011-08-03
打赏
举报
回复
或者
typedef vector<int, MyAllocator<int> > MyVector;
注意右边的两个>中间是有空格的。
Michael_Xie
2011-08-03
打赏
举报
回复
[Quote=引用 12 楼 rendao0563 的回复:]
引用 9 楼 to_ker 的回复:
感谢楼上各位的回复, 我的MyAllocator是没有问题的,直接将allocate模板类拷贝出来, 修改了下类名名和alllocate与deallocate的函数内容,用vector<int, MyAllocator<int>>测试是正常的。
我想要的是定义一种新的MyVector,以后使用这个类型时就不用写vector<int, MyAllo……
[/Quote]
提供默认模板参数
template<typename T, typename allocator = MyAllocator<T> >
MyVector
{
...
};
rendao0563
2011-08-03
打赏
举报
回复
[Quote=引用 9 楼 to_ker 的回复:]
感谢楼上各位的回复, 我的MyAllocator是没有问题的,直接将allocate模板类拷贝出来, 修改了下类名名和alllocate与deallocate的函数内容,用vector<int, MyAllocator<int>>测试是正常的。
我想要的是定义一种新的MyVector,以后使用这个类型时就不用写vector<int, MyAllocator<int>>
vector……
[/Quote]
默认参数
rendao0563
2011-08-02
打赏
举报
回复
那个要实现不少接口的. 要是不知道怎么弄. 可以参考一下loki 我csdn下载空间里面有.
http://rendao0563.download.csdn.net/
至善者善之敌
2011-08-02
打赏
举报
回复
[Quote=引用 2 楼 dizuo 的回复:]
是不是MyAllocator的问题。
[/Quote]
放你的MyAllocator代码
downmooner
2011-08-02
打赏
举报
回复
stl容器都不建议继承 因为他的析构大多不是virtual
先模仿stl allocater写个自己的分配器。然后加入vector的参数即可
wjjjuniniho
2011-08-02
打赏
举报
回复
不用继承的话可以把vector设成自己设计的类的成员变量...
luciferisnotsatan
2011-08-02
打赏
举报
回复
[Quote=引用 1 楼 michael_xie 的回复:]
那你提供一个新的内存分配器,譬如MyAllocator,你就可以这样用了:
vector<int, MyAllocator<int> > vec;
[/Quote]
++
失败报什么错?MyAllocator你怎么写的?
可以看下 stl源代码剖析
摩尔信使MThings
2011-08-02
打赏
举报
回复
编译失败信息是什么?
ryfdizuo
2011-08-02
打赏
举报
回复
是不是MyAllocator的问题。
Michael_Xie
2011-08-02
打赏
举报
回复
那你提供一个新的内存分配器,譬如MyAllocator,你就可以这样用了:
vector<int, MyAllocator<int> > vec;
healer_kx
2011-08-02
打赏
举报
回复
[Quote=引用 1 楼 michael_xie 的回复:]
那你提供一个新的内存分配器,譬如MyAllocator,你就可以这样用了:
vector<int, MyAllocator<int> > vec;
[/Quote]
UP
MyAllocator照着抄一份就行了。
to_ker
2011-08-02
打赏
举报
回复
感谢楼上各位的回复, 我的MyAllocator是没有问题的,直接将allocate模板类拷贝出来, 修改了下类名名和alllocate与deallocate的函数内容,用vector<int, MyAllocator<int>>测试是正常的。
我想要的是定义一种新的MyVector,以后使用这个类型时就不用写vector<int, MyAllocator<int>>
vector<string, MyAllocator<string>>这样的代码,直接写MyVector<int>, MyVector<string>,就和原有的vector的使用一样, 不过是内存分配器变了。
编译器(gcc、g++)
编译器(gcc、g++)
【c++基础】第六章
STL
标准
模板
库
第六章
STL
标准
模板
库
STL
标准
模板
库超详细讲解(栈,队列)
STL
容器是用于存储数据的类,包括向量(vector)、双端队列(deque)、表(list)、队列(queue)、堆栈(stack)、集合(set)、多重集合(multiset)、映射(map)和多重映射(multimap)等。每种容器都有其独特的特点和适用场景,例如,向量适合频繁访问元素且可能在尾部进行大量插入和删除操作的场景,而集合则用于存储不重复的元素。
STL
标准
模板
库
1,数据结构 (1)数组 array 向量vector (2)栈 stack (3)队列 queue 优先队列priority_queue 双端队列deque (4)键值对集合 map multimap unordered_map unordered_multimap (5)集合 set multiset unordered_set unordered_multiset (6)链表 list forward_list .............................
模板
的
模板
参数
1、概念
模板
的
模板
参数
(template template parameters),这个名字有点长,首先要理解什么是
模板
的
模板
参数
。需要知道的是函数
模板
是不支持
模板
的
模板
参数
的,所以这儿所指的
模板
的
模板
参数
就是类
模板
的
模板
参数
,即对一个类
模板
,它的
模板
参数
本身也是一个
模板
,更确切地说是一个类
模板
。 2、例子 为了说明怎样使用
模板
的
模板
参数
,以
STL
中的容
C++ 语言
65,199
社区成员
250,520
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章