如何声明将使用map.size()计算的int类型

时间:2016-04-26 02:12:30

标签: c++ stl

我有一个名为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

1 个答案:

答案 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所使用的,无论如何 - 它确定足够大。