zoukankan      html  css  js  c++  java
  • empty()和size() == 0有区别吗

    empty()和size()

    这里说的empty()size()都是STL的容器中提供的接口,分别用来判断当前容器是否为空和获取当前包含的元素个数

    区别

    其实按道理来说两者应该是相等的,而且STL容器中一般也是通过判断size() == 0来实现empty()函数的。但«effective STL»指出,在C++98中,list的实现可能没有记录元素个数m_size这个变量,从而导致接口size()的时间复杂度为O(n)。但C++标准保证empty()接口的时间复杂度是常数的O(1)。所以推荐使用empty()判空。下图是cppreference中对list::size()的时间复杂度的描述(C++98):
    list.size(C++98)

    没区别

    但到了C++11时,标准规定了list::size()的时间复杂度是常数O(1),所以现在没区别了,不过还是推荐用empty()接口,语义更清晰:
    list.size(C++11)

  • 相关阅读:
    Redis基础
    Windows 10 中 安装 RabbitMQ
    Nginx
    第二章-矩阵
    第一章-行列式
    第六章-微分方程
    第五章-多元函数
    第四章-定积分
    第三章-不定积分
    第二章-导数
  • 原文地址:https://www.cnblogs.com/HachikoT/p/12168893.html
Copyright © 2011-2022 走看看