当前位置: 首页> 科技> 能源 > 网络营销策划有限公司_网络公司项目_百度app下载官方免费下载安装_谷歌关键词分析工具

网络营销策划有限公司_网络公司项目_百度app下载官方免费下载安装_谷歌关键词分析工具

时间:2025/7/11 8:23:32来源:https://blog.csdn.net/weixin_70742989/article/details/146914106 浏览次数:1次
网络营销策划有限公司_网络公司项目_百度app下载官方免费下载安装_谷歌关键词分析工具

目录

  • 一、list 简介
  • 二、list 的常用接口
    • 1. 构造函数(constructor )
    • 2. 迭代器(iterator)
    • 3. 容量、修改和访问(capacity 、modify and access)

一、list 简介

  简单来说,list 就是数据结构初阶中学习的链表,还是所有特性都具备的带头双向循环链表。带头是为了更好地适应迭代器,双向循环是为了插入和删除的效率。与之前学习的 list 相比,本次学习的 list 升级成为了类模板且增加了迭代器。

二、list 的常用接口

  下面介绍一下 list 各方面的常用接口。

1. 构造函数(constructor )

  下面是 list 常用的四个构造函数的声明和使用。

(1)函数声明

// list 构造函数声明// 1. 默认构造函数
list();
// 2. 指定个数和初始值
list(size_t n, const T& value = T());
// 3. 迭代器构造函数
template<class Iterator>
list(Iterator first, Iterator last);
// 4. 复制构造函数
list(const list<T>& lt);

(2)使用演示

// 1. constructor
void test1()
{// 1. 默认构造函数list<int> lt1;cout << "lt1.size: " << lt1.size() << endl << endl;// 2. 指定个数和初始值list<int> lt2(5, 1);cout << "lt2.size: " << lt2.size() << endl;cout << "lt2: ";for (const auto& e : lt2)cout << e << " ";cout << endl << endl;// 3. 迭代器构造函数vector<int> vt_i;for (int i = 1; i < 5; ++i)vt_i.push_back(i);list<int> lt3(vt_i.begin(), vt_i.end());cout << "lt3.size: " << lt3.size() << endl;cout << "lt3: ";for (const auto& e : lt3)cout << e << " ";cout << endl << endl;// 4. 拷贝构造函数list<int> lt4(lt3);cout << "lt4.size: " << lt4.size() << endl;cout << "lt4: ";for (const auto& e : lt4)cout << e << " ";cout << endl << endl;
}

(3)运行结果
在这里插入图片描述

2. 迭代器(iterator)

  下面介绍 list 常用的四个迭代器。反向迭代器参考正向迭代器的用法。

(1)函数声明

// 1. 普通迭代器
iterator begin();
iterator end();
// 2. const 迭代器
const_iterator begin() const;
const_iterator end() const;
// 3. 反向迭代器
reverse_iterator rbegin();
reverse_iterator rend();
// 4. const 反向迭代器
const_reverse_iterator rbegin() const;
const_reverse_iterator rend() const;

(2)使用演示

// 2. 迭代器
void test2()
{list<int> lt1;for (int i = 1; i < 10; ++i)lt1.push_back(i);// 1. 正向迭代器遍历list<int>::iterator it = lt1.begin();while (it != lt1.end()){cout << *it << " ";++it;}cout << endl;// 2. 反向迭代器遍历list<int>::reverse_iterator rit = lt1.rbegin();while (rit != lt1.rend()){cout << *rit << " ";++rit;}cout << endl;
}

(3)运行结果
在这里插入图片描述

3. 容量、修改和访问(capacity 、modify and access)

  下面分别介绍 list 的 2 个与容量有关的接口、2 个与访问有关的接口,8 个与修改有关的接口。

(1)函数声明
  下面的 T 是模版中的类型参数。

// 1. capacity
size_t size() const;
bool empty() const;// 2. access
T& front();
T& back();// 3. modify
void push_front(const T& value);
void push_back(const T& value);
void pop_front();
void pop_back();
iterator insert(iterator pos, const T& value);  // 在 pos 位置前插入
iterator erase(iterator pos);  // 删除 pos 位置

(2)使用演示

// 3. capacity、access and modify
void test3()
{// 1. capacitylist<int> lt1;if (lt1.empty()){cout << "lt1 is empty.\n";}for (int i = 1; i < 10; ++i)lt1.push_back(i);cout << "lt1.size: " << lt1.size() << endl << endl;// 2. accesscout << "lt1.front: " << lt1.front() << endl;cout << "li1.back: " << lt1.back() << endl;// 3. modifylist<int> lt2;// 插入lt2.push_back(1);lt2.push_front(2);// 打印for (const auto& e : lt2)cout << e << " ";cout << endl;// 插入lt2.insert(lt2.begin(), 10);lt2.insert(lt2.end(), 99);// 打印for (const auto& e : lt2)cout << e << " ";cout << endl;// 删除lt2.pop_back();lt2.pop_front();// 打印for (const auto& e : lt2)cout << e << " ";cout << endl;// 删除lt2.erase(lt2.begin());lt2.erase(--lt2.end());// 打印for (const auto& e : lt2)cout << e << " ";cout << endl;
}

(3)运行结果
在这里插入图片描述

关键字:网络营销策划有限公司_网络公司项目_百度app下载官方免费下载安装_谷歌关键词分析工具

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: