关于allocator类中的allocate成员函数,VC6与标准库的定义是否不同?

coin8086 2005-07-09 11:39:39
平台:VC6+SP6,
有如下代码不能通过编译,报错:error C2660: 'allocate' : function does not take 1 parameters

#include <memory>

{
...
std::allocator<T> alloc;
size_type n;
...
T* data = alloc.allocate(n); //error C2660
...
}
我于是打开VC6中定义这个allocate的文件(...\VC98\INCLUDE\XMEMORY)一看,allocator类中相关的部分居然是这样定义的:
pointer allocate(size_type _N, const void *)
{return (_Allocate((difference_type)_N, (pointer)0)); }
我的问题是:(1)按照标准库,allocate不是应该只有一个参数(size_type _N)么?
(2)pointer allocate(size_type _N, const void *),这算什么语法?第二个参数定义成这样是什么意思啊?如果要调用这个成员函数应该怎么写呢?

请诸位高手指教了,小弟我不胜感激.


...全文
93 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
coin8086 2005-07-12
  • 打赏
  • 举报
回复
谢谢Zhymax(蓝点)
Zhymax 2005-07-10
  • 打赏
  • 举报
回复
msdn :
allocator::allocate
pointer allocate(size_type n, const void *hint);

The member function allocates storage for an array of n elements of type T, by calling operator new(n). It returns a pointer to the allocated object. The hint argument helps some allocators in improving locality of reference -- a valid choice is the address of an object earlier allocated by the same allocator object, and not yet deallocated. To supply no hint, use a null pointer argument instead.

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧