我有一个名为mySize
的成员变量,我想计算与地图大小的差异,比如myMap
。声明mySize
时我应该使用哪种类型?我现在正在使用uint32_t。
例如。,
在myClass.h
:
static uint32_t getDifference(std::map<string, int> myMap);
static uint32_t mySize_;
在myClass.cpp
:
uint32_t getDifference(std::map<string, int> myMap){
return std::abs(mySize_ - myMap.size());
}
更新:上述代码中的严重错误。 std::abs
不能用于uint32_t
。但这与问题没有多大关系。我应该使用std::size_t
代替uint32_t
。
答案 0 :(得分:1)
[社区wiki尽可能多地将这些信息发布为评论]
应该是:
render() {
let _ = require('underscore')
let buttonStyle = _.clone(button);
}
上面的代码检查哪个更大,以避免像std::map<string, int>::size_type getDifference(const std::map<string, int>& myMap)
{
return mySize_ >= myMap.size() ? mySize_ - myMap.size()
: myMap.size() - mySize_;
}
这样的减法,对于无符号类型,这会产生非常大的数字,因为2 - 3
无法表示:-1
发生为了防止这种情况为时已晚,并且对它看到的非常大的数字没有任何作用。
在实践中,使用abs()
通常是因为它更容易输入和阅读,几乎总是实现size_t
所使用的,无论如何 - 它确定足够大。