当前位置:  开发笔记 > 编程语言 > 正文

在哪里可以查找C++ STL中vector的size_type定义?

如何解决《在哪里可以查找C++STL中vector的size_type定义?》经验,为你挑选了1个好方法。

将vector向量size()函数的结果转换为an 似乎是安全的unsigned int.但是我怎么能确定呢?我的文档不清楚如何size_type定义.



1> paercebal..:

不要假设容器大小的类型(或其他任何内部类型).

今天?

现在最好的解决方案是使用:

std::vector::size_type

T是你的类型.例如:

std::vector::size_type i ;
std::vector::size_type j ;
std::vector >::size_type k ;

(使用typedef可以帮助更好地阅读)

迭代器和所有其他类型的"内部"STL容器也是如此.

在C++ 0x之后?

当编译器能够找到变量的类型时,您将能够使用auto关键字.例如:

void doSomething(const std::vector & p_aData)
{
    std::vector::size_type i = p_aData.size() ; // Old/Current way

    auto j = p_aData.size() ;    // New C++0x way, definition
    decltype(p_aData.size()) k;  // New C++0x way, declaration
}

编辑:来自JF的问题

如果他需要将容器的大小传递给一些使用unsigned int的现有代码,该怎么办? - JF

这是使用STL时常见的问题:如果没有一些工作,你就无法做到.

第一种解决方案是将代码设计为始终使用STL类型.例如:

typedef std::vector::size_type VIntSize ;

VIntSize getIndexOfSomeItem(const std::vector p_aInt)
{
   return /* the found value, or some kind of std::npos */
}

第二个是自己进行转换,使用static_cast,使用一个函数,如果值超出目标类型的边界将断言(有时,我看到代码使用"char",因为," 你知道,索引将会永远不要超过256 "[我引用记忆]).

我相信这本身就是一个完整的问题.

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有