在我编写使用
std::vector
的大部分程序中,最令我感到困扰的是转换。int offset=(int)v.size();
unsigned int offset=(unsigned int)v.size();
很遗憾,这样的问题反映在许多其他问题中,例如这个。
是否有任何方法可以重新调整std::vector
并强制它将大小作为int
或unsigned int
返回?
int offset=v.size_i();
类型转换使代码变得更加混乱。尽管有些程序员喜欢使用它们,认为每次都进行转换没有问题。
c++14
解决方案更受青睐,但也欢迎 c++17
解决方案。
如果有人建议更改变量的类型,那么迟早会出现另一种类型转换。因此,这并不能解决问题。
请考虑这样丑陋的短语。
function((int)myvar1.vec[32].size(),(int)myvar2.vec[32].size());
这里的 function
只接受 int
类型。而且我无法控制它的定义。
auto offset = v.size()
? - Some programmer dudesize_t
作为类型。顺便问一下,您是否尝试过不进行强制转换构建?我已经尝试了很多额外的警告,并且没有关于像int offset = v.size();
这样的普通赋值的编译器警告。除非您有超过 20 亿个元素的容器,否则不用担心。如果确实存在这种情况,请改用long long
。 - Some programmer dudemyvar1.vec[32].size()
看起来已经很混乱了,这个可以封装成一个函数,让你得到想要的结果。 - kmdreko