wordpress环境下的PHP编程seo上海优化

bicheng/2026/1/24 4:21:50/文章来源:
wordpress环境下的PHP编程,seo上海优化,如何在360做网站SEO,网页界面设计教材list容器概述 list的容器的实现是使用双向链表的形式的数据结构实现的。(也有的编译器使用双向循环链表) 链表是一种数据结构#xff0c;这种结构与数组的结构不同#xff0c;链表的每个节点都存放有特定个数的指针(双向链表:两个(一个指向前面的元素#xff0c;另一个指向…list容器概述 list的容器的实现是使用双向链表的形式的数据结构实现的。(也有的编译器使用双向循环链表)  链表是一种数据结构这种结构与数组的结构不同链表的每个节点都存放有特定个数的指针(双向链表:两个(一个指向前面的元素另一个指向后面的元素)普通的链表:一个(指向后面的元素))。链表中的数据也不是连续的也就是说它们的物理内存中不是挨着的这样链表就不用局限于空间不够的情况只要内存中有位置它可以在任意位置创建节点存放数据只要使用上一个或者下一个节点的指针存放这个内存的地址就行。由于这样的结构链表就不能像数组一样随机存取数据了(简单来说使用[]或者at()访问数据)。 数组是由于内存连续所以我们可以根据首地址偏移值就很快找到相应位置了。 链表其存储的数据是不连续的我们想要找到下一个数据存储的位置需要根据上一个节点中记录的位置来找到它。 --  所以我们找一个数据需要从最开始一个一个往后找。 鉴于链表这种存储数据的结构list容器在添加和删除数据的时候很快但是在存取数据的时候由于需要从头开始遍历寻找所以很慢。 所以当我们的场景是需要多次插入删除但是很少存取元素的时候建议使用list容器。而且使用list容器插入和删除数据的时候不会影响到别的数据只需要将对应的指针进行修改就行。所以注意在list容器中开辟内存时是需要多少开辟多少什么时候需要再开辟是不会像vector一样提前开辟list提前开辟相当于一种浪费。 要使用list容器需要导入头文件#includelist  1. list容器的默认构造  代码 /*listint l1;listfloat l2;listStudent l3;listint* l4;listStudent*l5; */ 2. list容器的有参构造  代码 /*int arr[] { 1,2,3,4,5 };vectorint v1{ 10,11,12,,13,14,15,16 };// 第一种: 开始l1容器具有10个元素并且元素值为类型默认值(int的默认值为0)listint l1(10);// 第二种: 开始l2容器具有10个元素并且元素值为5listint l2(10, 5);// 第三种: 开始l3容器中具有初始化列表中的元素listint l3{ 1,2,3,4,5 };// 第四种: 开始l4容器中具有l3的全部元素listint l4(l3.begin(), l3.end());// 第五种: 拷贝构造函数listint l5(l3);// 第六种: 开始l6容器中具有数组第二个---第四个元素listint l6(arr 1, arr 5);// 第七种: 开始l7中具有v1容器中的全部元素listint l7(v1.begin(), v1.end()); */ 相关知识点:  list类型 l1(n);  // l1开始就有n个元素并且值为类型默认值list类型 l1(n,elem);  // l1开始就有n个元素并且值为elemlist类型 l1(l2);  // 拷贝构造函数list类型 l1({data...});  // 开始l1就拥有初始化列表中的元素list类型 l1(beg,end); // 在左闭右开的迭代器范围内的数据放入l1。(可以为其它容器的迭代器)list类型 l1(ptr1,ptr2); // 在左开右闭的指针区间内的数据放入l1。(一般指定数组中数据的范围) 3. list容器尾部添加和删除元素(和deque的使用方法类似)  代码  /*listint l1;// 添加元素l1.push_back(1);l1.push_front(2);l1.emplace_back(3);l1.emplace_front(4);// 删除元素l1.pop_back();l1.pop_front(); */ 4. list容器的元素个数 代码  listint l1{10,11,12,13,14,15};cout l1容器的元素个数: l1.size() endl; // 元素个数为6 5.在指定位置插入元素  代码:使用insert()函数 listint l1;listint l2{ 1,2,3,4,5 };vectorint v1{10,11,12,13,14,15};// 一. 使用insert// 方式一:l1.insert(l1.begin(), 5);// 方式二:l1.insert(l1.begin(), 5, 3);// 方式三:l1.insert(l1.begin(), l2.begin(), l2.end()); // 使用相同容器l1.insert(l1.begin(), v1.begin(), v1.end()); // 使用不同容器// 方式四:l1.insert(l1.begin(), { 5,6,7,8,9 });// 二. 使用emplacel1.emplace(l1.begin(), 5); 相关知识点:  和deque的用法是类似的。 insert在插入多个元素和单个元素时候会返回一个直系那个插入位置的迭代器。(不同的编译器实现可能不一样)使用insert()函数将一个list(l1)中的元素添加到另外一个list(l2)容器中不会影响l1中的数据。 代码:  使用splice()函数  /*splice 的多种重载形式1. l1.splice(l1.begin(),l2, l2.begin(),l2.begin()); // 将l2中[beg,end)范围内的元素 添加到l1的开始位置2. l1.splice(l1.begin(),l2); // 将l2的全部数据添加到l1的开始位置3. l1.splice(l1.begin(), l2, l2.begin()); // 将l2中第二个元素放到l1的开始位置4. l1.splice(l1.begin(), listint{1,2,3}); // 将匿名对象中的元素放到l1的开始位置5. l1.splice(l1.begin(),{1,2,3}); // 同上*/int main(void) {listint l1{ 10,20,30,40,50};listint l2{ 1,2,3,4,5 };l1.splice(l1.begin(), l2,l2.begin()); // 将l2的第一个元素放到l1的开始位置cout l1中的元素: endl;for (listint::iterator it l1.begin(); it ! l1.end(); it) {cout *it ; }cout endl;cout l2中的元素: endl;for (listint::iterator it l2.begin(); it ! l2.end(); it) {cout *it ;}cout endl;system(pause);return 0; } 结果:  相关知识点  splice(list1.loc,list2); //  将list2中的元素拼接到list1的loc位置。splice(list1.loc,list2,list2.loc); // 将list2中loc位置的元素拼接到list1的loc位置splice(list1.loc,list2,list2.beg,list2.end); // 将list2[beg,end)范围内的元素拼接到list1的loc位置splice(list1.loc,{data...}); // 将data中的数据拼接到list1的loc位置。 注意事项  splice函数添加数据和insert函数不同splice函数会影响第二个list中的元素。 仔细观察上面的输出会发现我们将l2中的第二个数据添加到l1中l2中的这个数据就没有了。 这是为什么呢?  这其实和list的内部实现使用链表是有关系的注意我们在介绍splice的时候使用的是拼接而不是添加。 图解splice的过程: list的底层是使用链表实现的链表的内存不连续使用指针维系先后关系。  此时我们使用splice函数将list2中的2拼接到list1的开头。  如图我们会发现在list1中添加list2中的第二个元素并不是像insert一样在list1中添加一个和list2对应元素相同的数据。而是改变list1和list2的指针指向。 将list2中本来第一个元素指向的下一个元素是2因为我们使用splace将2拼接到list1中了所以list2中的第一个元素的下一个元素就是2对应的元素的下一个元素也就是3。 与list2一样list1就是将list2中解放出来的元素中指针指向list1中当前的第一个元素。 所以使用splice()函数的时候是会影响list2中的元素的因为它是直接改变对应元素的指针的指向将list2中的元素链接到list1中这样这个元素就变成list1中的元素了。(list2中这个元素就没有了) 代码: 使用merge()函数  int main(void) {listint l1{ 1,2,30,40,50};listint l2{ 1,2,3,4,5 };/*list2.merge(list1); 将list1中的元素根据其在list2中的大小顺序拼接到list2中list2.merge(list1,函数对象); 与上面类似但是我们可以参数2指定拼接规则*/l1.merge(l2);cout l1中的元素: endl;for (listint::iterator it l1.begin(); it ! l1.end(); it) {cout *it ; }cout endl;cout l2中的元素: endl;for (listint::iterator it l2.begin(); it ! l2.end(); it) {cout *it ;}cout endl;system(pause);return 0; } 结果:  相关知识点  list2.merge(list1);  // 将list1中的元素根据其在list2中的大小关系拼接到list2中。(默认是从小到大) 例:  list1:  1,2,3   list2: 1,5,6   list2.merge(list1)之后 list1:  空,  list2: 1,1,2,3,5,6。 list2.merge(list1函数对象);  //作用和上面类似只不过是拼接规则我们来指定  注意事项:  使用merge()进行拼接时两个容器中的元素必须都符合拼接规则。否则程序中断。 比如:  我们要求从小到大拼接 那么list1和list2中的元素也必须是从小到大的。 如果我们只传入一个参数那么就默认从小到大拼接。 因为内部会调用less函数对象类(就是c内部实现的一个函数对象类(要求传入两个参数n1,n2,n1n2返回true)在此处表示从小到大排的)我们也可以传入使用list2.merge(list1,greater类型())(传入一个greater类的匿名对象因为less和greater都是类模板所以使用是要传入类型参数), 来实现从大到小拼接但是这样list1和list2中的元素也必须是从大到小的。greater和less一样都是内部实现的函数对象只不过greater和less相反当n1n2时返回true。(在此处表示从大到小拼接)当然我们可以在第二个参数传入我们自定义的函数对象来指定拼接规则。使用merge()进行拼接和splice()一样都会影响list1中的元素。 6. list容器元素的访问(注意有变化) 注意 前面说到list的内部是以链表的形式实现的所以它与vector和deque不同它是不能使用下标来访问数据的(也就是[]和at())。  代码 listint l2{ 1,2,3,4,5 };// 使用front()获取第一个元素并可以将其修改 l2.front() 10; cout l2.front() endl;// 使用back()获取最后一个元素并可以将其修改 l2.back() 20; cout l2.back() endl;// 还有就是使用迭代器我们后面说 相关知识点 除注意事项外其它的和deque是类似的。 7. list容器迭代器的使用(注意有变化) 注意 迭代器我们可以看做指针它是用来遍历容器用的。 对于list容器其迭代器除,--之外不能进行任何的运算操作(比如: it1, it5, it1it2 , it2-it1等)。而且也不能进行比较(等) 原因就是因为list的底层结构是用链表来实现的它的内存不是连续的你对指针或者迭代器1等其也是根据指针或者迭代器所在位置偏移相应的字节来使其指向下一个位置但是链表的内存不连续指不定存哪呢你怎么知道偏移多少所以不允许。 那为什么--可以此处的--你可以理解成其指定了迭代器的方向表示迭代器向后--表示向前。其内部进行了操作是可以找到下一个元素的。 只使用--也能体现出链表在访问数据时需要一个一个找。 至于为什么不能比较因为其指向的内存可能相差很多你用它们比较没有意义。(vector和deque的可以比较因为其内存是连续的) 代码  listint l2{ 1,2,3,4,5,6,7,8,9,10};listint::iterator it1 l2.begin(); it1; it1;listint::iterator it2 l2.end();// 遍历数据 while (it1 ! it2) {cout *it1 ; // 3 4 5 6 7 8 9 10it1; } 相关知识点  除去注意中的其它的都和deque类似。 对于rbegincbegincrbegin等在vector中已经演示。 8. list容器删除元素(有新增) 代码: erase()和clear() listint l2{ 1,2,3,4,5,6,7,8,9,10};// 一.erase的两种用法 // 删除指定位置的元素 l2.erase(l2.begin());// 删除规定范围内的元素 listint::iterator it l2.begin(); it; it; l2.erase(it, l2.end());// 二.clear的用法: 清空元素 l2.clear();for (listint::iterator it l2.begin(); it ! l2.end(); it) {cout *it ; } cout endl; 相关知识点:  对于erase和clear函数的使用和deque是类似的。在erase和循环结合删除指定元素的时候应该注意迭代器的更新的问题。-- 使用erase函数的返回值(在vector中已经演示过了)  代码:使用remove()函数  listint l2{ 1,1,2,3,55,1,1,1,6,5};l2.remove(1);for (listint::iterator it l2.begin(); it ! l2.end(); it) {cout *it ; // 输出2,3,55,6,5}cout endl; 相关知识点:  remove(nub);  // 用于删除list容器中所有与nub值相同的元素。  代码: remove_if()函数  class Compare1 { public:bool operator()(int n1) {return n1 5; // 将大于等于5的元素都删除掉} };int main(void) {listint l2{ 6,6,6,4,5,4,3,2,7,9,10};l2.remove_if(Compare1());system(pause);return 0; } 结果:   相关知识点:  remove_if()函数用于删除满足条件的元素。这是一个函数模板 它接收一个类对象用来指定删除元素的条件。编译器会根据传入实参的类型来实例化类参数 使用一个类对象来指定某种规则(此处为删除元素的规则)我们使用函数对象来指定。 Compare1是一个函数对象类其指定了删除元素的规则(将list容器中5的元素删除掉,当传入元素5,()重载函数返回true那么就删除此元素)。 我们在remove_if()中传入一个临时对象函数内部会使用函数对象来调用()重载方法来判断一个元素是否应该被删除。 代码:  unique()函数  int main(void) {listint l2{ 6,6,6,4,5,4,3,2,2,7,9,10};l2.unique();for (listint::iterator it l2.begin(); it ! l2.end(); it) {cout *it ; }cout endl;system(pause);return 0; } 结果:  代码:  使用unique(参数)函数 class uniqueClass { public:bool operator()(int a, int b) {return a!b;} };int main(void) {listint l2{ 6,6,6,4,5,4,3,2,2,7,9,10};l2.unique(uniqueClass());for (listint::iterator it l2.begin(); it ! l2.end(); it) {cout *it ; }cout endl;system(pause);return 0; } 结果:  相关知识点:  unique()函数如果不写参数这个函数用于将存储在列表中的数据如果相邻的元素有相同的那么只保留其中的一个元素将其它的相同的都删除掉。(注意:  必须是相邻的元素不相邻的不会)。 unique(参数)函数传入函数对象用来指定unique的删除规则。上面代码中我们传入了自定义的规则如果相邻的元素不相同则删除元素。 --  可以根据自己的需求定义删除规则。 unique删除过程: (图解)  删除相邻的相同元素: 最开始会比较前两个数据如果后面的等于前面的那就将后面的元素删除。  第一个元素与第二个元素相同则删除第二个元素然后第一个元素再和第三个元素进行比较判断是否相同。 如果第一个元素和第三个元素不相同那么就跳过当前数据让第三个元素和第四个元素进行相比。以此类推知道判断结束。 删除相邻的不同元素(也就是我们代码中自定义的删除方式也可以定义别的)  判断第一个元素和第二个元素是否不同如果不同就删除后面的元素如果相同就使用第二个元素和第三个元素进行比较。 第二个元素和第三个元素比相同那么删除第三个元素第二个元素再和第四个元素比较以此类推知道判断完所有的元素。 (所以第二个代码的结果为666) 9. list容器的排序函数  代码: sort()  int main(void) {listint l1{ 5,4,3,2,1};/*sort(); // 默认将list中的元素按照从小到大排序sort(函数对象); // 将元素按照函数对象指定的规则排序*/l1.sort();//l1.sort(greaterint());cout l1中的元素: endl;for (listint::iterator it l1.begin(); it ! l1.end(); it) {cout *it ; }cout endl;system(pause);return 0; }结果:  相关知识点 sort();  // 将list中的元素默认按照从小到大的顺序排列。(其实就是默认使用less函数对象) sort(函数对象); // 将list中的元素按照函数规则指定的规则进行排列。 我们使用greater给出实例:   sort(greaterint());    10. list容器数据翻转 代码: reverse()函数 int main(void) {listint l1{ 5,4,3,2,1,6};/*reverse()将lsit容器中的元素进行翻转*/l1.reverse();cout l1中的元素: endl;for (listint::iterator it l1.begin(); it ! l1.end(); it) {cout *it ; }cout endl;system(pause);return 0; } 结果:  相关知识点:  reverse();  // 将list容器中的元素进行翻转。  10.list的其它函数  代码:  swap()函数交换两容器的数据  int main(void) {listint l1{ 5,4,3,2,1,6};listint l2{ 10,11,12 };l1.swap(l2);cout l1中的元素: endl;for (listint::iterator it l1.begin(); it ! l1.end(); it) {cout *it ; }cout endl;cout l2中的元素: endl;for (listint::iterator it l2.begin(); it ! l2.end(); it) {cout *it ;}cout endl;system(pause);return 0; } 结果:  代码:  max_size()(和前面容器类似) int main(void) {listint l1{ 5,4,3,2,1,6};cout l1.max_size() endl; // 768614336404564650system(pause);return 0; } 代码:  resize()函数  和deque和vector类似所以就不在展示了。

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

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

相关文章

浙江省建设信息网站app推荐

图 3 说明在客户机和服务器之间完成 RPC 涉及的步骤。 图 3. 在客户机和服务器之间完成 RPC 涉及的步骤服务器 RPC 应用程序初始化期间它会向 RPC 运行时库注册接口。需要注册接口是因为,客户机在向服务器发出远程过程调用时,要检查它是否与服务器兼容。…

如何开通网站石家庄市住房和城乡建设局官方网站

目录 说明PIHM 部分版本说明PIHM V2.3PIHM V3.0PIHM V3.0编译步骤准备工具源代码编译工具测试环境步骤编译GDAL编译SQlite3编译CURLcmake命令行GUI

网站建设会议纪要wordpress管理员与编辑可见

文章目录 abstract向量的基本概念向量向量的坐标分解式和坐标👺向量的模向量的长度(大小)👺零向量单位向量👺方向向量非零向量的单位向量正规化向量夹角👺 向量方向角和向量间夹角投影几何描述向量的线性运算向量的加减运算向量的…

禅城教育网站建站如何开发手机网站

转自: https://blog.csdn.net/bjweimengshu/article/details/79607522 假如没有分布式事务 在一系列微服务系统当中,假如不存在分布式事务,会发生什么呢?让我们以互联网中常用的交易业务为例子: 上图中包含了库存和订…

视频网站管理系统商务网站教程

每日OJ —— 110. 平衡二叉树 1.题目:110. 平衡二叉树2.解法2.1.算法讲解2.2.代码实现2.3.提交通过展示 1.题目:110. 平衡二叉树 2.解法 2.1.算法讲解 1.这道题中的平衡二叉树的定义是:二叉树的每个节点的左右子树的高度差的绝对值不超过 11…

响应网站怎么做教学视频徐州英才招聘网

在 Ubuntu 系统上安装 Anaconda 是一个直接的过程。Anaconda 是一个流行的 Python 和 R 数据科学及机器学习平台,它包括了许多科学计算和数据处理的库。以下是在 Ubuntu 上安装 Anaconda 的步骤: 1. 下载 Anaconda 安装脚本 首先,需要从 An…

h5网站案例做海报找素材的网站

0x01 产品简介 网康科技的NS-ASG应用安全网关是一款软硬件一体化的产品,集成了SSL和IPSec,旨在保障业务访问的安全性,适配所有移动终端,提供多种链路均衡和选择技术,支持多种认证方式灵活组合,以及内置短信认证、LDAP令牌、USB KEY等多达13种认证方式。 0x02 漏洞概述 …

网站想换一个空间怎么办网站开发跟app开发的差别

该组件一般用于同时展示多个商品、分类的场景&#xff0c;也可以完成左右滑动的列表。 #平台差异说明 App&#xff08;vue&#xff09;App&#xff08;nvue&#xff09;H5小程序√√√√ #基本使用 通过slot传入内容 <template><u-scroll-list><view v-for…

金融公司网站建设模板软件项目流程八个阶段

线程的安全问题与线程的同步机制 以火车站买票的问题来举例。假设火车站有100张票&#xff0c;分三个窗口售卖这一百张票。 分别用继承Thread类和实现Runnable接口的方式&#xff1a; 实现Runnable接口&#xff1a; public class WindowTest {public static void main(Stri…

网络营销网站源码网站建设优化一年赚几十万

本身这个问题之前未找到很好的解决办法&#xff0c;本地请求Https请求URL时&#xff0c;一直没有问题&#xff0c;在线上服务器上时&#xff0c;总是出现javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure的问题&#xff0c; 1、开始以为双方的协…

国外做海报的网站免费杂志模板

zip4j解压zip时&#xff0c;出现中文乱码&#xff0c;看了下&#xff0c;zip4j解压时支持设置文件编码&#xff0c;我们只需要识别文件是不是utf-8编码&#xff0c;如果不是utf-8就使用gbk解压&#xff0c;但是这个判断没有100%准确的方式&#xff0c;我试过通过字节流的bom标记…

怎么做便民信息网站网页设计什么主题好

文章目录 前言引入1、链表定义及结构链表的分类3、单向不带头链表实现实现完整代码 4、带头双向循环链表实现实现完整代码 前言 引入 在上一篇文章中&#xff0c;我们认识了顺序表&#xff0c;但是在许多情况中&#xff0c;顺序表在处理一些事件时还存在许多问题&#xff0c;比…

如何使用电子商务网站东莞离莞最新规定

问题&#xff1a;一个div元素盒子 宽度固定 内容是中文到达盒子宽度放不下时会自动换行&#xff0c;但是如果输入的事纯数字或者字母 会发现内容区会溢出 异常现象&#xff1a;11111超出div盒子 解决方案&#xff1a;添加属性 word-break: break-all; 原理&#xff1a;浏览器…

珠海哪个公司做网站好二手东西网站怎么做

Apifox是一款功能强大的接口调试软件&#xff0c;其特色功能丰富&#xff0c;且在前端mock数据生成方面表现出色。以下是对Apifox软件特色功能的详解&#xff0c;以及如何进行前端mock数据生成的步骤&#xff1a; https://apifox.com/help/api-docs/exporting-api https://www…

ssh做的网站找郴州一家做网站的公司电话

软件开发过程中经常会用到配置文件,某些应用场景要求在软件运行时动态修改配置文件,此时就需要监控配置文件是否被修改,下面我们就来看看如何使用C实现这一功能吧 软件开发过程中经常会用到配置文件&#xff0c;某些应用场景要求在软件运行时动态修改配置文件&#xff0c;此时…

南昌网站建设哪家好薇软通动力和中软国际对比

我觉得做深度学习相关的开发&#xff0c;要深刻认识到自己的显卡资源有多少&#xff0c;以及对应能做一些什么研究 比如今天的我就对这部分认识不深&#xff0c;终归还是实践代码少~缺乏经验 我觉得之后要多跑代码&#xff0c;多跑工程项目啊。 我今天做了一件什么事情 我企…

家居网站建设精英网站加上视频对seo影响

在VC的函数参数中常出现WPARAM和LPARAM,这两个有什么特殊意义么?它们的含义是不是要事先定义? WPARAM和LPARAM一般在消息里面用的很多,其实没有特殊的含义的。 是两普通的变量 。 是怎样通过wParam,lParam传参数的呢?有时候表示点的坐标,有时表示…

网站建设以及seo做网站范本

在ArcGIS API for Android中,MapView通常只能设置一个OnTouchListener,这意味着你不能直接为同一个MapView对象多次调用setOnTouchListener方法,以添加多个不同的触摸监听器。 如果你需要多个不同的触摸监听器来处理不同类型的触摸事件,通常的做法是在一个OnTouchListener…

百度网站建设北京jquery 网站后台模板 仿

首次整理于 2019-07-27 22:04:00&#xff0c;现在整理发布在公众号申明原创。整理了一下大学期间2012年&#xff5e;2016年发布在QQ空间&#xff0c;自己感觉写得还行的七首“诗词”。回答知乎问题&#xff1a;你写过什么自认为惊艳的诗&#xff1f;中国古诗词博大精深。小时候…

做网站都用什么语言宿迁网站建设费用

在Linux系统中&#xff0c;有多种压缩和解压缩命令可供使用。以下是一些常用的压缩和解压缩命令的详细解释&#xff1a; 压缩命令 1. gzip 压缩文件&#xff1a; gzip file 这将压缩file并生成一个名为file.gz的压缩文件。 保留原始文件&#xff1a; gzip -c file > fil…