我想创建一个大 std::vector
的所以operator[]
应该接收long long
而不是unsigned int
,我尝试编写自己的分配器:
template <typename T>
struct allocator64 : std::allocator<T> {
typedef long long difference_type;
typedef unsigned long long size_type;
};
但是当我尝试以下操作时:
long long n = 5;
std::vector<int, allocator64<int> > vec(n);
vec[n-1] = 2;
对于第二行和第三行,我收到以下警告:
警告 C4244:“参数”:从“__int64”转换为“无符号整数”,可能丢失数据
我错过了什么?我认为operator[]
size 构造函数的类型和类型应该来自allocator::size_type
.
我正在使用 VS9 (2008)。