郑州做网站推广电/网络营销和传统营销的区别有哪些

郑州做网站推广电,网络营销和传统营销的区别有哪些,怎么做英文版的网站,用html做班级网站目录 list的概念 list的构造函数 list的大小 size() resize() empty() list的插入 push_front()和emplace_front() push_back()和emplace_back() insert()和emplace() list的删除 pop_front() pop_back() erase() remove() remove_if() unique() clear()…

目录

list的概念

list的构造函数 

list的大小

size()

resize()

empty()

list的插入

push_front()和emplace_front()

push_back()和emplace_back()

insert()和emplace()

list的删除

pop_front()

pop_back()

erase()

remove() 

remove_if()  

 unique()  

clear()

list的拼接

splice()

merge()

list的迭代器

迭代器类型

begin()和end()

rbegin()和rend()

list中的元素访问

front()

back()

list的逆置


list的概念

  1. list是一种可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。
  2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立结点当中,在结点中通过指针指向其前一个元素和后一个元素。
  3. list与forward_list非常相似,最主要的不同在于forward_list是单链表,只能进行单方向迭代。
  4. list与其他容器相比,list通常在任意位置进行插入、删除元素的执行效率更高。
  5. list 和 forward_list最大的缺陷是不支持在任意位置的随机访问,其次,list还需要一些额外的空间,以保存每个结点之间的关联信息(对于存储的类型较小元素来说这可能是一个重要的因素)。

list的构造函数 

默认构造函数:创建一个空链表

list<T> list_name;

填充构造函数:创建包含 n 个相同值的链表

list<int> list2(5, 10);  // 包含5个值为10的节点:{10, 10, 10, 10, 10}

范围构造函数:通过迭代器范围 [first, last) 初始化链表

int arr[] = {1, 2, 3};
list<int> list3(arr, arr + 3);  // 复制数组内容:{1, 2, 3}

拷贝构造函数:通过另一个链表深拷贝初始化

list<int> list4(list3);  // 拷贝 list3 的内容:{1, 2, 3}

移动构造函数:通过移动另一个链表的资源初始化(高效转移所有权)

list<int> list5(move(list4));  // list4 变为空,list5 接管其内容

初始化列表构造函数(C++11 起):通过初始化列表直接赋值

list<int> list6 = {4, 5, 6};  // 直接初始化:{4, 5, 6}

 

list的大小

size()

  • size():返回当前元素数量
#include <list>
#include <iostream>int main() {list<int> mylist = {1, 2, 3, 4, 5};cout << "Size: " << mylist.size(); // 输出 5return 0;
}

resize()

  • 若 n < size():截断链表,仅保留前 n 个元素。

  • 若 n > size():扩展链表,新增元素默认初始化为 T()(或指定 value)。

std::list<int> mylist = {1, 2, 3};mylist.resize(5);     // 扩展为 {1, 2, 3, 0, 0}(填充默认值0)
mylist.resize(2);     // 截断为 {1, 2}
mylist.resize(4, 99); // 扩展为 {1, 2, 99, 99}

empty()

检查链表是否为空(等价于 size() == 0

std::list<int> mylist;
if (mylist.empty()) 
{std::cout << "List is empty!";
}

list的插入

push_front()和emplace_front()

  • push_front (const value_type& val)
    • ​​​在头部插入元素(拷贝构造)。
  • emplace_front (Args&&... args);(C++11 起)
    •  在头部直接构造元素(避免临时对象拷贝)

头部插入

list<int> mylist;
mylist.push_front(10);  // 链表内容:{10}
mylist.push_front(20);  // 链表内容:{20, 10}

push_back()和emplace_back()

尾部插入

  • push_front (const value_type& val)
    • ​​​在尾部插入元素(拷贝构造)。
  • emplace_front (Args&&... args);(C++11 起)
    •  在尾部直接构造元素(避免临时对象拷贝)
mylist.push_back(30);   // 链表内容:{20, 10, 30}

insert()和emplace()

  • insert(iterator pos, const T& value)  
    • 在迭代器 pos 指向的位置前插入元素(拷贝构造)。
  • emplace(iterator pos, Args&&... args)(C++11 起)
    • 在 pos 位置直接构造元素(更高效)。 

指定位置插入

示例一:插入单个元素

list<int> mylist = { 1, 2, 3 };
mulist.insert(mylist.begin(), 1);
// mylist { 1, 1, 2, 3 }

示例二:插入多个相同元素

list<int> mylist = { 1, 2, 3 };
list<int>::iterator it = mylist.begin();
myList.insert(it, 3, 100);     // 插入3个100
// mylist { 100, 100, 100, 1, 2, 3 }

示例三:插入范围元素

list<int> mylist = { 1, 2, 3 };
list<int>::iterator it = mylist.end();vector<int> vec = {5, 6, 7};
myList.insert(it, vec.begin(), vec.end());  // 在末尾插入vector内容
// mylist { 1, 2, 3, 4, 5, 6 }

list的删除

pop_front()

头部删除,移除链表第一个元素

list<int> mylist = { 1, 2, 3 };
mylist.pop_front();    // mylist:{ 2, 3 }

pop_back()

尾部删除,移除链表最后一个元素

list<int> mylist = { 1, 2, 3 };
mylist.pop_back();    // mylist:{ 1, 2 }

erase()

任意位置删除

erase(iterator pos)
删除迭代器 pos 指向的元素

list<int> mylist = {10, 20, 30, 40};auto it = mylist.begin() + 2;
mylist.erase(it);        // 删除30 → {10, 20, 40}

erase(iterator first, iterator last)
删除迭代器范围 [first, last) 内的元素(左闭右开)

list<int> mylist = {1, 2, 3, 4, 5};
auto it = mylist.erase(v.begin() + 1, v.begin() + 3); 
// 删除元素 2 和 3,v = {1, 4, 5}
// it 指向 4

remove() 

用于删除容器当中特定值的元素

list<int> list1 = { 1, 2, 3, 4,3, 3 };
lt.remove(3); //删除容器当中所有值为3的元素
// list1 { 1, 2, 4 }

remove_if()  

用于删除容器当中满足条件的元素。

bool single_digit(const int& val)
{return val < 10;
}list<int> list1 = { 1, 2, 3, 4,3, 3, 10 };
lt.remove_if(single_digit); / /删除容器当中值小于10的元素
// list1 { 10 }

 unique()  

用于删除容器当中连续的重复元素。 

list<int> list1 = { 1, 4 ,3 ,3, 2, 2, 3 };
list1.sort();     //将容器当中的元素排为升序
list1.unique();     //删除容器当中连续的重复元素
// list1 { 1, 2, 3, 4 }

clear()

移除所有元素,size() 变为 0

list<int> mylist = { 1, 2, 3 };
mylist.clear();    // mylist.size() == 0

list的拼接

splice()

可以将一个链表的元素移动到另一个链表中,无需复制元素。

示例一:合并整个链表

    list<int> list1 = {1, 2, 3};list<int> list2 = {4, 5, 6};// 将 list2 的所有元素移动到 list1 的末尾list1.splice(list1.end(), list2);// 输出结果: 1 2 3 4 5 6for (auto num : list1) {std::cout << num << " ";}

示例 2: 移动单个元素

list<int> list1 = {1, 2, 3};
list<int> list2 = {4, 5, 6};// 将 list2 的第一个元素移动到 list1 的末尾
auto it = list2.begin();
list1.splice(list1.end(), list2, it);    // list1{ 1, 2, 3 , 4 }

示例 3: 移动元素区间 

list<int> list1 = {1, 2, 3};
list<int> list2 = {4, 5, 6};// 将 list2 中从第二个元素到末尾的元素移动到 list1 的末尾
auto start = list2.begin();
start++;
auto end = list2.end();
list1.splice(list1.end(), list2, start, end);    
// list1 { 1, 2, 3, 5, 6 }

merge()

如果两个链表已排序,可以用 merge() 合并并保持有序:

std::list<int> list1 = {1, 3, 5};
std::list<int> list2 = {2, 4, 6};// 合并后 list2 变为空,list1 包含 1 2 3 4 5 6
list1.merge(list2);

list的迭代器

迭代器类型

迭代器类型说明示例
iterator可读写的正向迭代器list.begin()
const_iterator只读的正向迭代器list.cbegin()
reverse_iterator可读写的反向迭代器list.rbegin()
const_reverse_iterator只读的反向迭代器list.crbegin()

begin()和end()

  • begin():返回指向第一个元素的迭代器。

  • end():返回指向最后一个元素之后位置的迭代器(尾后迭代器)。

    list<int> lt(10, 2);//正向迭代器遍历容器list<int>::iterator it = lt.begin();while (it != lt.end()){cout << *it << " ";it++;}

rbegin()和rend()

  • rbegin():返回指向最后一个元素之后位置的迭代器(尾后迭代器)。

  • rend():返回指向第一个元素的迭代器。

    list<int> lt(10, 2);//反向迭代器遍历容器list<int>::reverse_iterator rit = lt.rbegin();while (rit != lt.rend()){cout << *rit << " ";rit++;}

支持的运算符

  • ++it 和 it++:向前移动

  • --it 和 it--:向后移动

  • *it:解引用获取元素值

  • it1 == it2 和 it1 != it2:比较是否指向同一位置

不支持的运算符

  • it + n 或 it[n](不支持随机访问)

  • it1 < it2(仅支持相等性比较)

 

list中的元素访问

front()

获取list容器第一个元素

    list<int> lt = { 0, 1, 2, 3, 4 };cout << lt.front() << endl; //0

back()

获取list容器最后一个元素

   list<int> lt = { 0, 1, 2, 3, 4 };cout << lt.back() << endl; //4

list的逆置

reverse()

list<int> list1 = { 1, 2, 3, 4, 5 };list1.reverse();
// list1 { 5, 4, 3, 2, 1 }  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/71985.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】(11) Map 和 Set

一、Map 和 Set 的简介 1、Set 和 Map Map 和 Set 是集合类框架学习的最后一部分。Map 和 Set 都是接口&#xff0c;需要通过 TreeSet、HashSet 和 TreeMap、HashMap 实例化。注意&#xff0c;Set 实现了 Collection&#xff0c;Map 并没有。 Set 存放的是键&#xff08;Key&a…

【HTML— 快速入门】HTML 基础

准备工作 vscode下载 百度网盘 Subline Text 下载 Sublime Text下载 百度网盘 vscode 下载 Sublime Text 是一款轻量好用的文本编辑器&#xff0c;我们在写前端代码时&#xff0c;使用 Sublime Text 打开比使用记事本打开&#xff0c;得到的代码体验更好&#xff0c;比 vscode…

鸿蒙开发深入浅出01(基本环境搭建、页面模板与TabBar)

鸿蒙开发深入浅出01&#xff08;基本环境搭建、页面模板与TabBar&#xff09; 1、效果展示2、下载 DevEco Studio3、创建项目4、新建页面模板5、更改应用信息6、新建以下页面7、Index.ets8、真机运行9、图片资源文件 1、效果展示 2、下载 DevEco Studio 访问官网根据自己的版本…

鸿蒙next 点击穿透实现

点击穿透可以参考华为开发的保留文章,该章节只能在developer preview版本下查看 点击穿透 主要的方法是hitTestBehavior // xxx.ets Entry Component struct HitTestBehaviorExample {build() {// outer stackStack() {Button(outer button).onTouch((event) > {console.i…

27.[前端开发-JavaScript基础]Day04-函数基本使用-递归-变量作用域-函数式编程

一、JavaScript函数 1 认识JavaScript函数 程序中的foo、bar、baz 认识函数 函数使用的步骤 2 函数的声明和调用 声明和调用函数 函数的参数 有参数的函数练习 函数的返回值 函数的练习 arguments参数&#xff08;JS高级再学习&#xff09; 3 函数的递归调用 函数中调用函数…

添加成对约束后的标签传播算法研究:使用Python语言编写算法,在空手道数据集下验证算法的准确性,在一定程度上解决非对齐问题

背景&#xff1a; 辅导的过程中遇到了一个比较新颖的问题&#xff0c;下面是我对这个问题的分析和简要思路介绍。 思路分析&#xff1a; 这算机器学习下面的无监督学习&#xff0c;标签传播算法简称LPA&#xff0c;传统的标签传播算法会出现非对齐问题&#xff0c;一句话描述就…

鸿蒙开发第4篇__关于在鸿蒙应用中使用Java语言进行设计

本博文很重要 HarmonyOS从 API8 开始不再支持使用Java作为开发语言&#xff0c;未来的新功能将在ArkTS中实现. API 8对应的是HarmonyOS 3.0.0版本。请看下图&#xff1a; 因此&#xff0c; 读者如果看到类似《鸿蒙应用程序开发》(2021年版本 清华大学出版计)书 还使用Java语言…

P9420 [蓝桥杯 2023 国 B] 双子数--最高效的质数筛【埃拉托斯特尼筛法】

P9420 [蓝桥杯 2023 国 B] 双子数 题目 分析代码 题目 分析 首先&#xff0c;我们如何找到双子数&#xff1f; 1&#xff09;找到所有质数满足范围内的质数&#xff08;即至少质数^2<23333333333333) 我们看见双子数x的范围2333<x<23333333333333&#xff0c;又因为…

deepseek 导出导入模型(docker)

前言 实现导出导入deepseek 模型。deepseek 安装docker下参考 docker 导出模型 实际生产环境建议使用docker-compose.yml进行布局&#xff0c;然后持久化ollama模型数据到本地参考 echo "start ollama" docker start ollama#压缩容器内文件夹&#xff0c;然后拷贝…

C#从入门到精通(35)—如何防止winform程序因为误操作被关闭

前言: 大家好,我是上位机马工,硕士毕业4年年入40万,目前在一家自动化公司担任软件经理,从事C#上位机软件开发8年以上!我们在开发的上位机软件运行起来以后,一般在右上角都有一个关闭按钮,正常情况下点击关闭按钮就能关闭软件,但是不排除我们不想关闭软件,但是因为不…

[RH342]tcpdump

[RH342]tcpdump 1. 题目2. 解题 1. 题目 服务器serverc 和 servera 之间有进程定期发送一个明文密码,找出它2. 解题 找出通信端口 抓包分析 tcpdump -X -vv port 6644红框中就是密码,所以密码是root123

连接Sql Server时报错无法通过使用安全套接字层加密与 SQL Server 建立安全连接

文章目录 一. 前言二. 解决方案 方案1方案2 三. 总结 一. 前言 在《数据库原理》这门课的实验上&#xff0c;需要使用SQL Server&#xff0c;然后使用jdbc连接sql server突然报错为&#xff1a;SQLServerException: “Encrypt”属性设置为“true”且 “trustServerCertific…

Buildroot 添加自定义模块-内置文件到文件系统

目录 概述实现步骤1. 创建包目录和文件结构2. 配置 Config.in3. 定义 cp_bin_files.mk4. 添加源文件install.shmy.conf 5. 配置与编译 概述 Buildroot 是一个高度可定制和模块化的嵌入式 Linux 构建系统&#xff0c;适用于从简单到复杂的各种嵌入式项目. buildroot的源码中bui…

物联网通信应用案例之《智慧农业》

案例概述 在智慧农业方面&#xff0c;一般的应用场景为可以自动检测温度湿度等一系列环境情况并且可以自动做出相应的处理措施如简单的浇水和温度控制等&#xff0c;且数据情况可远程查看&#xff0c;以及用户可以实现远程控制。 基本实现原理 传感器通过串口将数据传递到Wi…

kotlin 知识点一 变量和函数

在Kotlin中定义变量的方式和Java 区别很大&#xff0c;在Java 中如果想要定义一个变 量&#xff0c;需要在变量前面声明这个变量的类型&#xff0c;比如说int a表示a是一个整型变量&#xff0c;String b表 示b是一个字符串变量。而Kotlin中定义一个变量&#xff0c;只允许在变量…

基于数据可视化学习的卡路里消耗预测分析

数据分析实操集合&#xff1a; 1、关于房间传感器监测数据集的探索 2、EEMD-LSTM模型择时策略 — 1.EEMD分解与LSTM模型搭建 3、EEMD-LSTM模型择时策略 — 2. 量化回测 4、国际超市电商销售数据分析 5、基于问卷调查数据的多元统计数据分析与预测&#xff08;因子分析、对应分…

记录Liunx安装Jenkins时的Package ‘jenkins‘ has no installation candidate

1、确保是否安装了Java&#xff0c;如果没有&#xff0c;可通过以下命令进行安装&#xff1a; sudo apt update sudo apt install openjdk-21-jre2、安装Jenkins sudo apt update sudo apt install jenkins执行sudo apt install jenkins时&#xff0c;可能会出现 意思是&…

kiln微调大模型-使用deepseek R1去训练一个你的具备推理能力的chatGPT 4o

前言 随着deepseek的爆火&#xff0c;对于LLM的各种内容也逐渐步入我的视野&#xff0c;我个人认为&#xff0c;可能未来很长一段时间&#xff0c;AI将持续爆火&#xff0c;进入一段时间的井喷期&#xff0c;AI也会慢慢的走入我们每个家庭之中&#xff0c;为我们的生活提供便利…

sqli-labs

Less-8 单引号报错&#xff0c;双引号显示正常 又是You are in......看来还是用盲注 布尔盲注&#xff1a; 如下语句是用来判断当前数据库名的第一个字母是不是s&#xff0c;后面的以此类推&#xff0c;比较复杂和麻烦 ?id1 and substr(database(),1,1)s -- 比如这个我们通…

自定义ToolbarView实战指南(Kotlin版)

一、为什么我们需要造轮子&#xff1f; 看到标题你可能会问&#xff1a;系统自带Toolbar不香吗&#xff1f;确实香&#xff0c;但遇到这些场景就抓瞎了&#xff1a; 设计稿要求标题栏带渐变背景动态波浪线产品经理非要搞个不对称的返回按钮布局UI设计师坚持标题和副标题要45度…