为什么在C++容器中,它返回的是size_type而不是int?如果我们正在创建自己的结构,我们是否也应该鼓励使用size_type?
我知道unsigned int不能保持负值.但是以下代码编译时没有任何错误/警告.
unsigned int a = -10;
Run Code Online (Sandbox Code Playgroud)
当我打印变量a时,打印出错误的值.如果无符号变量不能保存有符号值,为什么编译器允许它们编译而不给出任何错误/警告?
有什么想法吗?
编辑
编译器:VC++编译器
解
需要使用警告级别4.
我想添加一个函数,它将.size()值作为整数返回,而不是无符号整数.
编辑:由于评论,我解释更详细:
我有代码:
int something = 3;
if(arr.size() > something)
Run Code Online (Sandbox Code Playgroud)
这将产生编译器警告,我不喜欢添加(int)到我拥有它的每个地方.所以,我认为使用sizei()函数会很好的解决方案:
int something = 3;
if(arr.sizei() > something)
Run Code Online (Sandbox Code Playgroud)
哪个不会产生警告.
所以,我不想创建一个单独的函数,而是std :: vector本身的一个函数.
编辑:似乎这样做的唯一方法是创建另一个函数,例如:
template <typename T>
inline int sizei(const T &arr){
return (int)arr.size();
}
Run Code Online (Sandbox Code Playgroud)
从积极的方面来看:这似乎根本不会增加我的可执行文件大小.