如何将std :: map中的元素数量作为unsigned long?

时间:2014-01-23 18:21:29

标签: c++ map std

如何将std :: map中的元素数量作为unsigned long?

假设您有这样的对象:

std::map<unsigned long, someClass *> myNightmare;

我一直试图弄清楚如何获得它的元素数量。你看,我需要这个号码作为无符号长号,这样做似乎不正确:

unsigned long count = myNightmare.size();

那么你应该如何将元素的数量作为无符号长?

2 个答案:

答案 0 :(得分:4)

使用静态演员。

long unsigned mySize = static_cast<long unsigned>(myNightmare.size());

答案 1 :(得分:2)

要真正便携和正确,您应该使用标准std::size_t或更准确地使用std::map<unsigned long, someClass*>::size_type

后者是std::map::size返回的类型,但通常与更通用的std::size_t不同。

如果你真的想继续使用long unsigned,那么你的行:

unsigned long count = myNightmare.size();

将为您执行隐式转换。