当前位置: 首页 > news >正文

局域网中做网站/seo优化效果怎么样

局域网中做网站,seo优化效果怎么样,平谷网站建设,手机上能不能制作网站开发前言 知识点很多,这里只记录遗忘的。从这章开始会对前面章节的内容进行一个扩充,如果以前的忘了读起来会有点吃力。总的来说,本章节难度不大。 文章目录一、概述二、容器库概览2.1容器定义和初始化2.2赋值三、顺序容器操作3.1添加元素3.2删除…

前言

知识点很多,这里只记录遗忘的。从这章开始会对前面章节的内容进行一个扩充,如果以前的忘了读起来会有点吃力。总的来说,本章节难度不大。

文章目录

    • 一、概述
    • 二、容器库概览
      • 2.1容器定义和初始化
      • 2.2赋值
    • 三、顺序容器操作
      • 3.1添加元素
      • 3.2删除元素
      • 3.3forward_list
      • 3.4容器操作使迭代器失效
    • 四、vector对象是如何增长的
    • 五、string操作
      • 5.1构造string 的其他方法
      • 5.2改变string的其他方法
      • 5.3string搜索操作
      • 5.4compare函数
      • 5.5数值转换
    • 六、容器适配器

一、概述

​ 顺序容器一共有六种类型:vector、deque、list、forward_list、array、string。下图是它们的一些特性。除了固定大小的array外,其他容器都提供高效、灵活的内存管理。vector、string和array之所以支持快速随机访问,是因为它们的元素存储在连续的内存空间中,所以进行插入删除操作就会很慢。而forward_list和list正好相反,它们存储元素的内存空间都是离散的,因此访问元素的开销较大。deque相对来说访问速度和某些情况的插入删除操作都比较高效。

array和forward_list都是C++11增加的新特性。array相对内置数组,效果更高、更安全。forward_list设计是为了达到与手写单向链表的性能。新标准库的容器优于旧版本。

image-20230307203401211

二、容器库概览

2.1容器定义和初始化

​ 将一个新容器创建为另一个容器的拷贝的方法:1)直接拷贝整个容器(两个容器的类型必须相同);2)拷贝一个由迭代器指定的元素范围(array除外)(两个迭代器的类型可以不同,只要元素能够转换)

image-20230307210016181

与顺序容器大小相关的构造函数

​ 如果元素类型是内置类型或者是具有默认构造函数的类类型,可以只为构造函数提供一个容器大小参数。如果元素没有默认构造函数,除了大小参数外,还必须指定一个显式的元素初始值。

array

array与内置数组很相似,当定义一个array时,除了指定元素类型,还要指定容器大小。

array<int, 42> 
array<string, 10>

一个默认构造的array是非空的,如果我们对array进行列表初始化,初始值的数目必须等于或小于array的大小。内置数组不能对其进行拷贝或对象赋值操作,但是array没有限制

int d[3] = {1,2,3};
int c[3] = d[3]; // 错误
array<int, 3> d2 = {1,2,3};
array<int, 10> c2 = d2;

2.2赋值

​ 赋值就是把左边容器的元素全部换成右边容器中元素的拷贝。只有顺序容器可以使用assign,但是array不支持assign操作

image-20230307213436479

assign

​ 赋值运算符要求等号两边的运算对象具有相同的类型,assign允许从一个不同但相容的类型赋值,或者从容器的一个子序列赋值。使用assign会使左边容器内部的迭代器、引用和指针失效

swap

swap交换两个相同类型容器的内容,除string外,指向容器的迭代器、引用和指针在swap操作之后都不会失效。swap两个array会正在交换它们的元素

三、顺序容器操作

3.1添加元素

​ 除了array,所有标准库容器都提供灵活的内存管理。下表是添加元素的的操作。前面提到,像vector、string等容器添加一个元素可能会导致整个对象的存储空间重新分配,所以当我们使用这些操作时,必须记得不同容器使用不同的策略来分配元素空间。

image-20230309192600649

当我们将一个对象插入到容器时,实际上放入的是对象的拷贝,容器的元素与提供值的对象之间没有任何关联。

emplace

C++11引入了三个新成员:emplace_front、emplace、emplace_back,前面说了以前的插入元素的方法是拷贝,而这些新成员会进行构造,不会拷贝。下面一段代码很容易理解它们之间的差别。加入有一个info对象,它含有三个数据成员,且对应的构造函数。在使用emplace_back,我们可以在A的末尾添加一个Info对象,但是push_back却不行,因为它是拷贝元素,对于push_back的函数设计里面没有接收三个参数的版本,所以只能写成最后一行的形式,先构造,再拷贝。总之,emplace_back直接进行构造简化了操作过程。当然,如果Info对象没有对应三个参数的构造函数,那么该操作也会失效

A.emplace_back("heyun",12,23);
A.push_back("heyun",12,23); // 错误
A.push_back(Info("heyun",12,23));

3.2删除元素

​ 下标是删除元素的操作。

image-20230309195451698

3.3forward_list

​ 有C语言基础的应该都记得链表,forward_list其实就是一个单向链表。它的特殊之处在于,进行添加和删除元素时,删除或添加的元素之前的那个元素的后继会发生改变。

image-20230309195942688

下表是forward_list特有的插入和删除元素操作。

image-20230309201352502

3.4容器操作使迭代器失效

添加元素

  1. vector和string,如果存储空间被重新分配,指向容器的迭代器、指针和引用都会失效。如果没有重新分配,则指向插入元素之间的有效,之后的全部失效。
  2. deque,除了在首尾之外的任何位置插入元素会让它们都失效,如果在首尾添加元素,迭代器会失效,但指向存在的元素的引用和指针不会失效
  3. list和forward_list,全部都有效

删除元素

  1. list和forward_list,指向容器其他位置的迭代器全部都有效
  2. deque,在首尾之外的任何位置删除元素,指向被删除元素之外其他元素的迭代器、引用或指针也会失效。如果删除的是尾元素,则尾后迭代器也会失效,但是其他迭代器、引用和指针不受影响。如果删除首元素,这些都不受影响
  3. vector和string,指向被删除元素之前的有效。
  4. 只要删除元素,尾后迭代器总是失效。

四、vector对象是如何增长的

​ 第一次接触vector时,就很好奇这个和数组类似的存储容器居然有和链表一样的动态增加容量的功能。我们知道vector为了支持快速随机访问,里面的元素是连续存储的,如果这时vector的空间不足以接纳新的元素,可以再开辟一段连续的空间,就旧元素和新元素一起拷贝进去,最后删除旧的空间。这样虽然能够达到目的,但是经常进行性能会非常之慢。

C++标准库为了避免这种代价,设法减少容器空间重新分配次数的策略。当不得不获取新的内存空间时,vector和string的实现通常会分配比新的空间需求更大的内存空间

​ 我们可以人为的去管理容量的成员函数。对于reserve,只有当前需要的内存空间超过当前容量时才会改变vector的容量。

image-20230309204255024

五、string操作

​ 这一小节主要对第三章的string内容进行一个补充。

5.1构造string 的其他方法

image-20230309211748753

5.2改变string的其他方法

string类型同样支持顺序容器的赋值运算符及assign、insert和erase操作

s.insert(s.size(),5,'!'); // 在s末尾插入5个感叹号
s.erase(s.size() - 5,5); // 在s删除最后5个字符const char *cp = "Stately, plump Buck";
s.assign(cp,7); // s == "Stately"
s.insert(s.size(), cp + 7); // s == "Stately, plump Buck"

image-20230309213033023

image-20230309213602962

assign总是替换string中的所有内容,append总是将新字符追加到string末尾

5.3string搜索操作

string类提供了6个不同的搜索函数,每个函数都有4个重载版本,如下表所示。每个搜索操作会返回一个string::size_type值,表示匹配发生位置的下标,如果搜索失败,会返回一个名为string::nposstatic成员。两个搜索操作的返回值类型都是一个unsigned类型,所以不要用带符号类型进行接收。

image-20230309213642657

image-20230309213650936

下面写几个书上的例子:

string name("AnnaBelle");
auto pos1 = name.find("Anna"); // pos1 = 0// 查找给定字符串中任何一个字符匹配的位置
string numbers("0123456789"), name("r2d2");
auto pos = name.find_first_of(numbers);
string dept("1231p23");
auto pos = dept.find_first_not_of(number); // 返回p的下标

5.4compare函数

image-20230309214847872

5.5数值转换

C++11引入多个函数可以实现数值数据与标准库string之间的转换。

image-20230309214921668

六、容器适配器

stack、queue和priority_queue是三个顺序容器适配器。一个适配器是一种机制,能使某种事物的行为看起来像另外一种事物一样。

image-20230309215308928

定义一个适配器

​ 每个适配器都定义两个构造函数:默认构造函数创建一个空对象,接受一个容器的构造函数拷贝该容器来初始化适配器。stack和queue基于deque实现,priority_queue在vector的基础上实现

stack<int> stk(deq); // 从deq拷贝元素到stk
stack<string, vector<string>> str_stk; // 在vector上实现的空栈

所有适配器都要求容器具有添加和删除元素的能力,所以array不适用于适配器。同理forward_list也不行。

stack只要求push_back、pop_back和back,因此可以使用除array和forward_list之外的任何容器类型来构造stack

queue要求back、push_back、front和push_front,因此可以构造于list或deque之上,但不能基于vector构造。

priority_queue除了front、push_back和pop_back操作之外还要求随机访问能力,可以构造于vector或deque之上,不能基于list构造。

栈适配器

image-20230309220158132

队列适配器

priority_queue允许为队列中的元素建立优先级,也就是每个元素含有一个权重,权重大的会优先排在前面。

image-20230309220245287

相关文章:

《c++ primer笔记》第九章 顺序容器

前言 知识点很多&#xff0c;这里只记录遗忘的。从这章开始会对前面章节的内容进行一个扩充&#xff0c;如果以前的忘了读起来会有点吃力。总的来说&#xff0c;本章节难度不大。 文章目录一、概述二、容器库概览2.1容器定义和初始化2.2赋值三、顺序容器操作3.1添加元素3.2删除…...

QML动画(弹动和翻转效果)

Flickable&#xff08;弹动&#xff09; QML中提供了一个Flickable元素&#xff0c;可以将其子项设置在一个可以拖拽和弹动的界面上&#xff0c;使得子项目的视图可以滚动。在传统的用户界面中&#xff0c;可以使用标准控件&#xff08;如滚动条和箭头按钮&#xff09;滚动视图…...

GPS启动方式、定位速度、定位精度介绍

前面文章介绍了GPS定位基础知识 GPS定位知识介绍 (qq.com) 本文主要介绍GPS启动方式。 定位过程中最重要的辅助信息是时间、星历、位置。 根据辅助信息不同,...

深度学习零基础学习之路——第五章 个人数据集的制作

Python深度学习入门 第一章 Python深度学习入门之环境软件配置 第二章 Python深度学习入门之数据处理Dataset的使用 第三章 数据可视化TensorBoard和TochVision的使用 第四章 UNet-Family中Unet、Unet和Unet3的简介 第五章 个人数据集的制作 深度学习数据集的制作Python深度学…...

女神节 | PHP和Java算什么,女工程师才是最美最好的语言!

世界上第一个程序员是女性 第一个发现Bug的也是女性 在智领云有一群追求快乐和独立的女性工程师 她们多有魅力&#xff1f; 工位上她们专注于数据与代码 平日里郊游、瑜伽、插花、科学养娃一件不落 不仅用0和1编织数字世界 也在用心装点自己的生活 今天是国际劳动妇女节…...

【Python】装饰器

一、装饰器的作用 装饰器能够为已经存在的对象添加额外的功能。 二、什么是装饰器 装饰器本质是一个python函数&#xff0c;它可以让其他函数在不需要做任何代码变动的前提下增加额外功能&#xff0c;装饰器的返回值也是一个函数对象。 三、装饰器的应用场景 插入日志、性能…...

Spring事务及传播机制

概念 在MySQL中介绍过&#xff0c;当同一时间出现一起读写数据的情况&#xff0c;可能会导致最终的结果出错&#xff0c;因此可以使用事务来提高隔离级别 而Spring中也可以实现事务 手动添加事务 使用SpringBoot中的DataSourceTransactionManager对象可以获取事务&#xff0…...

43-Golang中的goroutine!!!

Golang中的goroutine进程和线程说明并发和并行并发并行Go协程和Go主线程案例小结goroutine的调度机制MPG模式基本介绍MPG模式运行的状态1MPG模式运行的状态2设置GOlang运行的CPU数不同 goroutine之间如何通讯使用全局变量加锁同步改进程序进程和线程说明 1.进程就是程序在操作…...

[深入理解SSD系列 闪存实战2.1.5] NAND FLASH基本读操作及原理_NAND FLASH Read Operation源码实现

前言 上面是我使用的NAND FLASH的硬件原理图,面对这些引脚,很难明白他们是什么含义, 下面先来个热身: 问1. 原理图上NAND FLASH只有数据线,怎么传输地址? 答1.在DATA0~DATA7上既传输数据,又传输地址 当ALE为高电平时传输的是地址, 问2. 从NAND FLASH芯片手册可知,要…...

pandas库中的read_csv函数读取数据时候的路径问题详解(ValueError: embedded null character)

read_csv()函数不仅是R语言中的一个读取csv文件的函数&#xff0c;也是pandas库中的一个函数。pandas是一个用于数据分析和处理的python库。它的read_csv函数可以读取csv文件里的数据&#xff0c;并将其转化为pandas里面的DataFrame对象。它由很多参数可以设置&#xff0c;例如…...

【量化交易笔记】4.移动平均值的实现

上一讲已经讲A股的数据下载到本地或保存数据库&#xff0c;我们可以随时使用。 移动平均MA(Moving Average) &#xff0c;是用统计分析的方法&#xff0c;将一定时期内的证券价格&#xff08;指数&#xff09;加以平均&#xff0c;并把不同时间的平均值连接起来&#xff0c;形成…...

2023年3月份的野兔在线工具系统版本更新

这个是野兔在线工具系统中文版更新&#xff0c;这次更新的功能&#xff0c;和修改的问题还是比较多的&#xff0c;也修复系统部分功能&#xff0c;应该也是目前市面上在线工具比较多的一个系统了。系统名称&#xff1a;野兔在线工具系统系统语言&#xff1a;中文版系统源码&…...

科技成果赋智中小企业深度行 边界无限靖云甲ADR入选十大优秀案例

近日&#xff0c;国家工业信息安全发展研究中心、青岛市工业和信息化局、青岛市民营经济发展局、青岛市即墨区人民政府、青岛蓝谷管理局联合举办的科技成果赋智中小企业“深度行”活动&#xff08;青岛站&#xff09;成功举办&#xff0c;同步举行了赋智“深度行”活动&#xf…...

我们的理性何处安放

每天工作压力和各种人相处都让我们非常忙碌&#xff0c;我们上大学&#xff0c;努力工作&#xff0c;都是想获得更好的人生场景&#xff0c;素养&#xff0c;提升自身的认知&#xff0c;这样就是对我们大多数人生最负责任。如何让自己理性与人为善&#xff0c;并能被人温柔以待…...

RecyclerView的详细使用

首先就是了解ListView和RecyclerView的区别1.ListView相比RecycleView的优点a.ListView实现添加HeaderView和FooderView有直接的方法b.分割线可以直接设置c.ListView实现onItemClickListence和onItemLongClickListence有直接的方法2.RecyclerView相比ListView的优点a.封装了Vie…...

一、向量及其线性运算

&#x1f64c;作者简介&#xff1a;数学与计算机科学学院出身、在职高校高等数学专任教师&#xff0c;分享学习经验、生活、 努力成为像代码一样有逻辑的人&#xff01; &#x1f319;个人主页&#xff1a;阿芒的主页 ⭐ 高等数学专栏介绍&#xff1a;本专栏系统地梳理高等数学…...

Spring Cloud/Spring Cloud Alibaba核心知识总结

Spring Cloud核心知识总结 springCloud是一个服务治理平台&#xff0c;若干个框架的集合&#xff0c;提供了全套的分布式系统的解决方案。包含&#xff1a;服务注册与发现、配置中心、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息、分布式事务等等。 SpringC…...

Locust框架从0到1入门

Locust介绍 Locust是使用Python语言编写实现的开源性能测试工具&#xff0c;可以用来测试Web应用程序、API、数据库等各种应用程序的性能&#xff0c;使用起来简洁、轻量、高效&#xff0c;并发机制基于gevent协程&#xff0c;可以实现单机模拟生成较高的并发压力。中文意为&a…...

C++:整数(short ,int,long,long long)表示范围

整形 C用short、int、long 、long long来表示整数的整形&#xff0c;同一整形也分为有符号&#xff08;signed&#xff09;和无符号&#xff08;unsigned&#xff09;两种。数据长度与操作系统和编译器的位数有关&#xff0c;其能够表示的范围也有所不同。接下来本文将用代码的…...

会声会影2023旗舰版新功能介绍,Corel VideoStudio Ultimate2023以及电脑系统配置要求

会声会影2023中文旗舰版功能非常强大的视频编辑软件&#xff0c;非常专业的使用效果&#xff0c;会声会影2023中文版可以针对剪辑电影进行使用&#xff0c;非常强大的色彩校正方式&#xff0c;无论什么光线下进行拍摄&#xff0c;都可以通过后期进行调整&#xff0c;并且里面超…...

软件测试用例篇(5)

测试是否运行代码去划分&#xff1f; 1)静态测试: 不运行代码&#xff0c;检查代码的风格&#xff0c;格式是否符合公司的标准规范&#xff0c;检查代码的逻辑结构是否满足需求要实现的功能 看代码&#xff0c;不运行代码&#xff0c;通过静态分析代码的语法&#xff0c;编写规…...

三个修饰符

三个修饰符三个修饰符一、abstract1.1 修饰类1.2 修饰方法二、final2.1 修饰类2.2 修饰方法2.3 修饰变量2.3.1 修饰属性2.3.2 修饰局部变量2.3.3 修饰方法的参数2.3.4 常量三、static关键字3.1 修饰属性3.2 修饰方法3.3 修饰代码块3.4 继承时的执行顺序三个修饰符 一、abstrac…...

JVM调优面试题——参数命令专题

文章目录1、JVM参数有哪些&#xff1f;1.1、 标准参数1.2、-X参数1.3、 -XX参数1.4、 其他参数1.5、 查看参数1.6、 设置参数的常见方式1.7、 常用参数含义2、JVM常用命令有哪些&#xff1f;2.1、jps2.2、jinfo2.3、jstat2.4、jstack2.5、jmap3、你会估算GC频率吗?4、 内存溢出…...

单例模式(设计模式详解)

单例模式 描述 单例模式是一种创建型模式&#xff0c;它的目的是确保一个类只有一个实例&#xff0c;并提供全局访问点。这个实例可以被多个客户端共享&#xff0c;从而避免创建多个实例所带来的资源浪费和不必要的复杂性。 实现 懒汉模式 public class LasySingleton {priv…...

设计一份关于文化遗产视频的调查问卷

参考文献&#xff1a;[1]任洁. 重庆美食类短视频传播策略研究[D].重庆交通大学,2021.DOI:10.27671/d.cnki.gcjtc.2021.000699.&#x1f4f0;1 设计背景现已制作一些关于文化遗产的时长4-5分钟的视频&#xff0c;需要面向在校大学生收集他们对视频的看法从而分析视频的传播效果&…...

Linux内核移植

内核移植半导体厂商会从linux内核官网下载某个版本&#xff0c;将其移植到自己的CPU上&#xff0c;测试成功后就会将其开放给该半导体的厂商的CPU开发者&#xff0c;开发者下载其提供的linux内核&#xff0c;然后将其移植到自己的 产品上。1、NXP官方开发板Linux内核编译测试编…...

忆享科技优化入职培训加强人效管理全面迎接新挑战

-优化入职培训-忆享科技加强人效管理入职培训课程 ✦ KPI系统上线 ✦ 砥砺前行前言许多企业随着自身的不断发展&#xff0c;对于各类人才引进需求也越来越迫切&#xff0c;一批批新员工的加入&#xff0c;公司规模逐渐扩大&#xff0c;给公司带来了全新的血液。但在大量新员工加…...

Spring——注解开发依赖注入和管理第三方bean

自动装配&#xff08;引用类型&#xff09; 环境准备: 文件结构如下图所示,Dao层的实现类里面有一个save方法&#xff0c;Service层里面的实现类有一个BookDao的声明和一个set方法&#xff0c;同时也有一个save方法&#xff0c;配置类的扫描范围如图所示 在当前的一个测试类当…...

shell可能考你但是不常用的基础($篇)

前言 当你面试的时候&#xff0c;可能要说的架构什么都准备好了&#xff0c;也说的七七八八&#xff0c;结果到最后问了一些基础的问题答不上来或者没想起来就很容易造成社会性死亡&#xff0c;一个没答上来道心被破&#xff0c;后面就更容易懵逼了 通常造成这个问题的原因是写…...

项目管理必备:如何绘制一份优秀的甘特图?

本文一共分为两部分—— 分享60Excel甘特图模板&#xff0c;简单省事儿分享两种甘特图制作教程&#xff0c;高效快捷 第一部分——60甘特图模板 分享一些项目管理甘特图的模板&#xff0c;省事儿&#xff01;高效&#xff01;简单&#xff01; Excel甘特图表模板自取&#xf…...