Mot*_*tti 2 c++ 64-bit stl allocator visual-studio-2008
我想创建一个大的 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;
};
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试以下内容时:
long long n = 5;
std::vector<int, allocator64<int> > vec(n);
vec[n-1] = 2;
Run Code Online (Sandbox Code Playgroud)
我收到第二行和第三行的以下警告:
警告C4244:'argument':从'__int64'转换为'unsigned int',可能会丢失数据
我错过了什么?我认为operator[]大小构造函数的类型和来源应该来自allocator::size_type.
我正在使用VS9(2008).
| 归档时间: |
|
| 查看次数: |
2535 次 |
| 最近记录: |