c++标准模板(STL)(std::list)(四)

定义于头文件 <list>

template<  class T,  class Allocator = std::allocator<T> > class list;    (1)    
namespace pmr { template <class T>

using list = std::list<T, std::pmr::polymorphic_allocator<T>>;} (2)    (C++17 起)

std::list 是支持常数时间从容器任何位置插入和移除元素的容器。不支持快速随机访问。它通常实现为双向链表。与 std::forward_list 相比,此容器提供双向迭代但在空间上效率稍低。

在 list 内或在数个 list 间添加、移除和移动元素不会非法化迭代器或引用。迭代器仅在对应元素被删除时非法化。

std::list 满足容器 (Container) 、具分配器容器 (AllocatorAwareContainer) 、序列容器 (SequenceContainer) 及可逆容器 (ReversibleContainer) 的要求。


检查容器是否为空

std::list<T,Allocator>::empty

bool empty() const;

(C++11 前)

bool empty() const noexcept;

(C++11 起)
(C++20 前)

[[nodiscard]] bool empty() const noexcept;

(C++20 起)

检查容器是否无元素,即是否 begin() == end() 。

参数

(无)

返回值

若容器为空则为 true ,否则为 false

复杂度

常数。

调用示例

#include <list>
#include <iostream>

int main()
{
    std::list<int> numbers;
    std::cout << "Initially, numbers.empty(): " << numbers.empty() << '\n';

    numbers.push_back(42);
    numbers.push_back(13317);
    std::cout << "After adding elements, numbers.empty(): " << numbers.empty() << '\n';
}

 输出

 

返回容纳的元素数

std::list<T,Allocator>::size

size_type size() const;

(C++11 前)

size_type size() const noexcept;

(C++11 起)

返回容器中的元素数,即 std::distance(begin(), end()) 。

参数

(无)

返回值

容器中的元素数量。

复杂度

常数或线性。(C++11 前)
常数。(C++11 起)

 调用示例

#include <list>
#include <iostream>

int main()
{
    std::list<int> nums {1, 3, 5, 7};

    std::cout << "nums contains " << nums.size() << " elements.\n";
}

输出

返回可容纳的最大元素数

std::list<T,Allocator>::max_size

size_type max_size() const;

(C++11 前)

size_type max_size() const noexcept;

(C++11 起)

返回根据系统或库实现限制的容器可保有的元素最大数量,即对于最大容器的 std::distance(begin(), end()) 。

参数

(无)

返回值

元素数量的最大值。

复杂度

常数。

注意

此值通常反映容器大小上的理论极限,至多为 std::numeric_limits<difference_type>::max() 。运行时,可用 RAM 总量可能会限制容器大小到小于 max_size() 的值。

 调用示例

#include <iostream>
#include <list>
#include <string>

int main()
{
    std::list<char> clist;
    std::cout << "Maximum size of a 'char list' is " << clist.max_size() << "\n";

    std::list<int> ilist;
    std::cout << "Maximum size of a 'int list' is " << ilist.max_size() << "\n";

    std::list<double> dlist;
    std::cout << "Maximum size of a 'double list' is " << dlist.max_size() << "\n";

    std::list<long long> lllist;
    std::cout << "Maximum size of a 'long long list' is " << lllist.max_size() << "\n";

    std::list<std::string> slist;
    std::cout << "Maximum size of a 'std::string list' is " << slist.max_size() << "\n";
}

输出

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值