C++ vector中的迭代器失效问题

vector中的迭代器失效问题 在使用vector的成员函数时,有两个成员函数内部会出!](https://img-blog.csdnimg.cn/20181124093029161.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01famlhbmppYW5qaWFv,size_16,color_FFFFFF,t_70)现迭代器失效的问
分类: 其他 发布时间: 01-13 23:11 阅读次数: 0

string类模拟实现

string类部分函数模拟实现 对于一些常用的string类的函数进行模拟实现,通过对一些函数的模拟是实现了解,其底层的实现原理,加深对于string 类中的函数的理解 构造函数 String(const char* str="")//使用缺省参数 27 :_str(new char[strlen(str)+1]) //预留一个位置放‘\0’ 28 {
分类: 其他 发布时间: 01-13 23:11 阅读次数: 0

生产者与消费者模型 及 条件变量

生产者与消费者问题 及 条件变量 什么是生产者和消费者模型 生产者,顾名思义就是生产东西的人,而消费者就消费的人。在系统中,假设有一块内存,生产者要向内存中放数据,而消费者要从内存区域中拿数据。这片内存区域可以被所有的线程访问,所以这片内存区域就是临界资源,而在对临界区的访问时,要保证不会出错,必须每次对临界区的访问是互斥的。所以当有许多生产者消费者时,每次只能有一个生产者放数据,也只能有一个消费者拿数据,也就是说该内存区域每次只能被一个线程访问。因此,生产者与生产者之间存在着互斥的关系,而消
分类: 其他 发布时间: 01-13 23:10 阅读次数: 0

通过Python正则表达式实现简单四则运算

python练习作业... import math, re string = "1.5 - 2.4 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 
分类: 编程语言 发布时间: 01-13 23:10 阅读次数: 0

第四天mysql学习笔记

一、单表查询1、查询所有记录select*fromstudent;2、查询指定字段selects_namefromstudent;例子指定s_name字段显示。3、查询指定条件selects_namefromstudentwheres_id>3;这例子是id大于3查询结果。4、查询指定字段别名selects_nameas学生姓名fromstudent;如图所示,注意:as可以不写。5、通配符
分类: 企业开发 发布时间: 01-13 23:10 阅读次数: 0

上海睿灵心理咨询中心

上海睿灵心理咨询网由上海电视台等各大媒体嘉宾心理专家万丽珠女士创办,上海市心理咨询行业协会会员单位、徐汇区青少年习惯教育援助中心,央视网唯一推荐心理品牌,荣获华尊奖影响中国2014年度最佳心理咨询金牌服务机构。上海睿灵心理咨询中心拥有一支充满爱心且具有专业技术的咨询师团队,对青少年心理健康问题(厌学、早恋、叛逆、学习障碍等)、以及成年人多年严重的抑郁、紧张、焦虑、强迫、恐惧症等问题有丰富的咨询经验。
分类: 其他 发布时间: 01-13 23:10 阅读次数: 0

生产者和消费者模型实现(基于条件变量)

基于条件变量的生产者和消费者模型实现 我们在这里使用使用一个生产者和一个消费者来实现。 并且使用一个定容的队列来作为两者的缓冲区域,即交易场所。 生产者与消费者模型及条件变量理解点这里 基本思路: 生产者向队列中放入数据 消费者从队列中拿走数据 存放数据的队列最为两者共享区域,必须进行互斥访问,使用互斥量 保持同步,避免饥饿问题。使用条件变量 当队列为空时,消费者进行等待,直到被生产者唤醒 消费者被唤醒后,拿走数据,并唤醒消费者 当队列为满时,生产者进行等待,直到被消费者唤醒 生产者被唤醒后,
分类: 其他 发布时间: 01-13 23:10 阅读次数: 0

生产者与消费者模型--基于posix信号量的

基于posix信号量的生产者于消费者模型 (此处只有一个生产者与一个消费者) 使用一个循环队列作为生产者于消费者之间的交易场所,生产者向其中放数据,消费者从中拿取数据。为了达到同步使用posix信号量。 posix 信号量 信号量就相当于一个计数器,记录共享资源的份数。每当有一个线程申请访问该共享资源,就将信号量的数目–,当信号量的数目为零时,表示所有的公共资源都正在被访问。其他想要继续申请信号量线程便进行等待当信号量数目不为0时,其他线程可继续申请。每当一个线程访问完信号量时,便将信号量的数
分类: 其他 发布时间: 01-13 23:10 阅读次数: 0

读写锁---理解及测试实例

读写锁 互斥锁与读写锁的区别 同样都是锁,互斥锁与读写锁之间什么区别和联系? 互斥锁:当使用互斥锁时,每次只能有一个线程拿到锁,进入临界区,访问临界资源。 在对临界资源的访问中,可以将访问方式份为两种: (1)读取数据 (2)修改数据 我们对与临界资源加锁,是为了保护临界资源的安全性与正确性,防止多个线程在同一时间段中对临界资源同时修改。但是,读取数据时我们只对于数据进行读取,并不对与数据进行修改,所以不会对数据的安全性和准确性造成问题。 但是,对于互斥锁来说,它不管线程是读数据还是写数据,每
分类: 其他 发布时间: 01-13 23:10 阅读次数: 0

c++ list 类的模拟实现

list的模拟实现 list的构成 list在底层是一条双向循环链表,可以在常数时间内完成插入和删除操作。最主要的缺点是无法随机存取。而在链表可以将其中元素存储在不相关的位置。 list的组成 list的本身和list的节点是不同的结构,list本身是由一个个的节点构成的。所以只需要完成对链表的操作即可。 list的节点类 与c中一样,每一个节点都有数据域前后指针,通过一个类来构造每一个节点 template<class T> //节点类 struct ListNode{
分类: 其他 发布时间: 01-13 23:09 阅读次数: 0

死锁的产生及处理策略条件

死锁 什么是死锁? 我们先从互斥量造成的死锁说起。 当一个线程去申请一个已经被持有,但是还没有释放的互斥量时,线程将会被阻塞,直到该互斥量被释放。如果该互斥量不被释放,该线程将会被一直阻塞。 因次,基于以上的原因,我们可以认为当一个线程去申请一个永远不会被释放的互斥量时,该线程将会被永远阻塞,这种情景我们称之为死锁。更宽泛的说,死锁就是,一个线程阻塞的等待一个永远不会为真的条件。 以下为两个常见的互斥量中死锁场景 (1)当一个线程重复的拿取同一个互斥量 当一个线程申请到该互斥量后,在持有该互斥
分类: 其他 发布时间: 01-13 23:09 阅读次数: 0

计算机网络笔记---互联网的组成及三种交换方式

互联网的组成 互联网从工作方式上可以划分为两大块: (1)边缘部分:由连接在互联网上的大量主机组成,由用户直接使用的部分。 这些主机包括了一切可以联网的设备,包括电脑,手机,联网的摄像头,更大的有互联网公司中的服务主机等。 (2)核心部分:由大量网络和连接这些网络的路由器组成。主要为边缘部分提供服务。 互联网的边缘部分 两台主机之间的相互通信,称为计算机之间的通信,在网络的边缘部分,主机之间的通信方式分为两种: 客户 - 服务器方式 两台主机间的通信,其实就是分别运行在两台主机上的进程之间的相
分类: 其他 发布时间: 01-13 23:09 阅读次数: 0

priority_queue优先级队列实现

优先级队列的实现 优先级队列,并不遵守先进先出的特性,所以可以说它并不是一个队列。尽管名字上有些想象。优先级队列,主要的特性就是,对存在里面的数据有了一个优先级高低的划分,或者大的优先级高,或者小的优先级高,出队时就根据优先级的高低进行出队。 跟据它的出入队特性,我们可以使用堆来对其进行构建。堆在物理结构上是一个连续的数组,可以支持下标的随机访问,而在逻辑上是一颗完全二叉树。通过构建大堆或者小堆完全满足它的按优先级最高的出队的要求,每次只需出堆顶的元素是即可。 pop 它的pop与其他的容器用
分类: 其他 发布时间: 01-13 23:09 阅读次数: 0

c++中模板的特化

关于模板的特化 关于c++函数的模板 函数的特化 使用模板时会遇到一些特殊的类型需要特殊处理,不能直接使用当前的模板函数,所以此时我们就需要对该类型特化出一个模板函数(就是写出一个模板函数专门给该类型使用) 当使用一个判断相等的模板函数时 template<class T> bool Isequal(T& p1, T& p2){ return p1 == p2; } 但是该模板函数在对于字符串进行比较时就不能使用了,对于字符串我们不能直接比较,因此直接特化出一个专门供字符串使用的模板参数
分类: 其他 发布时间: 01-13 23:08 阅读次数: 0

c++ 类型萃取

类型萃取 类型萃取是基于c++中的模板特化来实现的,是对于模板特化的应用。 关于c++的模板特化 当我们写一个同用的拷贝函数时,我们可以使用mymcpy进行拷贝,但是mymcpy是一个浅拷贝,对于一些基本类型的拷贝效率很高。但是对于要深拷贝的类型来说就不适用了,对于深拷贝我们可以使用for循环的方式来进行。 所以将两者进行结合,当基本类型进行拷贝时使用mymcpy,当自定义类型进行拷贝时使用for循环的方式。 使用函数的方式进行实现 #include <iostream> #include <
分类: 其他 发布时间: 01-13 23:08 阅读次数: 0

c++中的菱形继承与虚拟菱形继承

c++中的继承关系分为单继承和多继承 单继承:一个派生类只有一个基类 多继承:一个派生类不止有一个基类 在多继承的过程成容易造成二义性问题。 菱形继承是多继承中的一种复杂的情况。 菱形继承的有两个问题: 二义性:当使用A的数据时无法确定继承自B 还是 C 数据冗余:类D中会有两份类A的数据 先看一个菱形继承的例子 #include <iostream> using namespace std; class A{ public: int _a = 1; }; class B : publ
分类: 其他 发布时间: 01-13 23:07 阅读次数: 0

c++多态的原理 以及虚函数表详解

c++中多态的原理 要实现多态,必然在背后有自己的实现机制,如果不了解其背后的机制,就很难对其有更深的理解。 一个多态的例子 class Person{ public: virtual void Drink() { cout << "drink water" << endl; }; }; class Children : public Person{ public: virtual void Drink() { cout << "drinking juice " << end
分类: 其他 发布时间: 01-13 23:07 阅读次数: 0

telnet 安装及使用

Centos7 telnet的安装及使用 检测是否安装telnet命令 rpm -qa telnet-server rpm -qa xinetd 安装telnet yum list |grep telnet yum -y install telnet-server.x86_64 yum -y install telnet.x86_64 yum list |grep xinetd yum -y install xinetd.x86_64 将服务加入开机自启动 systemctl enab
分类: 其他 发布时间: 01-13 23:07 阅读次数: 0

吃零食 ZZULIOJ - 2488

题解 考虑吃完之后剩余零食数量为多少 剩余/N(整除)为剩余最低高度 这个高度不能超过最开始的最低高度 取min AC代码 #include <stdio.h> #include <bits/stdc++.h> using namespace std; typedef long long ll; const int INF = 0x3f3f3f3f; const int MAXN = 1e5 + 10; ll a[MAXN]; int main() { #ifdef LOCAL //fr
分类: 其他 发布时间: 01-13 23:06 阅读次数: 0

因式分解 ZZULIOJ - 2480 dp

题解 使用动态规划求解 d[i]表示从1到i的任意乘积和 第一个数字的乘积和为自身d[1] = a[1] 后面的每一个a[i]都可以乘在d[i - 1]的式子后面 并且a[i]单独也可以成为一个 再加上前面的 即 d[i] = d[i - 1] + d[i - 1] * a[i] + a[i] 注意取模 AC代码 #include <stdio.h> #include <bits/stdc++.h> using namespace std; typedef long long ll; con
分类: 其他 发布时间: 01-13 23:06 阅读次数: 0