关于C++ stl的size()方法的坑

Posted 夜雨闻铃风声起丶霞叶送秋月色明

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于C++ stl的size()方法的坑相关的知识,希望对你有一定的参考价值。

  切忌把该方法用于运算中,最好拿一个数来存你要的容器的大小,因为该方法返回的是一个size_type类型的无符号整型! 当你使用该方法参与运算时,譬如有一个vector num, num.size()-1,当vector的大小为0时,得到的运算结果不是-1,而是一个非常大的数,因为alu没有减法,运算时它会把-1当成无符号整型处理,而-1补码被当成无符号整型后与0相加会变成一个超级大的数,导致运算出错!

 

  

 

 在这里,数组大小为4,4-8结果变成了一个非常大的数,所以要记住这个坑。

以上是关于关于C++ stl的size()方法的坑的主要内容,如果未能解决你的问题,请参考以下文章

一些关于广泛使用的C++标准库STL的思考

关于 C++ 和 stl 向量的 begin() 的“需要左值作为增量操作数”

关于C++中vector< vector<int> >的含义.

C++ STL中的二分查找

(C++) 如何将 stl 列表声明为 extern?

新手用C++写了个泛型堆,效率竟比STL的更快?