社区
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的方法
...全文
148
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++)
1. **
默认
链接库**:`gcc`在链接阶段
默认
链接C标准库,而`g++`会链接C++标准库(如libstdc++),这对于C++程序使用
STL
(Standard Template Library)等C++特定功能至关重要。 2. **头文件处理**:`gcc`处理`.c`后缀...
【c++基础】第六章
STL
标准
模板
库
第六章
STL
标准
模板
库
STL
标准
模板
库超详细讲解(栈,队列)
STL
容器是用于存储数据的类,包括向量(vector)、双端队列(deque)、表(list)、队列(queue)、堆栈(stack)、集合(set)、多重集合(multiset)、映射(map)...
STL
标准
模板
库
(1)
STL
中的sort函数 sort 2个必选
参数
:begin和end,1个可选
参数
:比较函数
默认
升序(相当于less()),也可以用函数指针,包括greater()、less()、自定义函数指针、自定义仿函数 (2)list的成员sort函数 1个可...
STL
(标准
模板
库)
STL
:标准
模板
库,是C++标准库的重要组成部分 由概念便可以知道,
STL
中的所有数据结构都是以
模板
的方式创建的 LIST--container: list节点: list节点是一个双向指针,实质是一个
模板
结构体 template<...
C++ 语言
65,187
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章