对共享的资源或者数据做加锁处理 在多线程的环境下,有时需要多个线程对同一个资源或者数据进行操作,如果没有加锁,容易出现未定义的行为。 比如: #include <iostream> #include <string> #include <thread> #include <mutex> using namespace std; std::mutex mu; void CallHome(s
类与对象-类的组合 | C++基础 组合的概念 类中的成员是另一个类的对象;可以在已有抽象的基础上实现更复杂的抽象。 类组合的构造函数设计 原则:不仅要负责对本类中的基础类型成员数据初始化,也要对对象成员初始化。 声明形式: 类名::类名(对象成员所需的形参,本类成员形参) :对象1
基础知识 | C++基础 本页是对C++相关知识在 类与对象 前的汇总,便于回忆,将知识盲区记录如下 数据输入输出 流:数据从一个对象到另一个对象的流动,使用前要被建立,使用后被删除 提取操作:从流中获取数据的操作 插入操作:向流中添加数据的操作 常见的I/O流类库操纵符: 操纵符名 含义
#include<iostream> using namespace std; typedef struct Link_Node{ int data; Link_Node* next;} ; // 单链表的插i入操作,插入到第K个元素后面,link_list 是单链表的首指针// 有可能List,int insert_data(Link_Node *link_list,int k,int data){ Link_Node *p_node = link_lis
问题 debug代码发现某个值偶发变为-NaN需要定位具体位置。 尝试 基本可以判断是除0引起,想当然尝试了val < -10000的条件断点,无法捕捉。 解决 查阅文献 NaN is designed to propagate through all calculations, infecting them like a virus, so if somewhere in your deep, comp
Random Events比赛题目 题目统计 全部提交 时间限制:C/C++ 2000MS,其他语言 4000MS内存限制:C/C++ 256MB,其他语言 512MB 描述 Ron is a happy owner of a permutation a of length n. A permutation of length n is an array consisting of n distinct integers from
抢分制比赛题目 题目统计 全部提交 时间限制:C/C++ 1000MS,其他语言 2000MS内存限制:C/C++ 256MB,其他语言 512MB 描述 xiaoliu在玩一个抢分制的游戏,这个游戏规则如下:先给1个含n个正整数的数组a,每次xiaoliu可以选择删除一个数a[i],将数组中的等于a[i]+1和a[i]-1的元素都删除并
1. 对于序列型容器:vector, deque 删除当前元素:从当前位置到之后全部位置迭代器失效;(可以用 it=res.erase(it); 来实现迭代器的更新追踪) 添加一个元素:当添加元素后,导致了容器扩容的操作,则全部迭代器失效;(可以用 it=res.push(it);) 插入一个元素:当添加的元素在首尾位置以外,所有迭代器
整理浏览器标签 看到之前收藏的一个 do{ } while(0) 使用的好处,今天再看感觉这样用依然很妙。使用 do{ } while(0) 主要目的其实是为了利用循环里面可以break ,很优雅的实现跳过一些代码的执行示例:do{ 语句1; 语句2; if(条件){ 语句3; break; }
sudo vim ~/.bashrc # alias for g++ support C++ standard 11, 14, 17, 20 alias g++11='g++ -std=c++11' alias g++14='g++ -std=c++14' alias g++17='g++ -std=c++17' alias g++20='g++ -std=c++2a' g++20 -o a test.cpp 修改完成后
https://mp.weixin.qq.com/s/IJOouHalSvuWjqeUFqlanQ this 指针 this 指针是一个隐含于每一个非静态成员函数中的特殊指针。它指向调用该成员函数的那个对象。 当对一个对象调用成员函数时,编译程序先将对象的地址赋给 this 指针,然后调用成员函数,每次成员函数存取数据成员时,都隐式
1 内存篇 2 静态内存、栈内存、动态内存 3 静态内存:用来保存局部static对象,类static数据成员、以及定义在 任何函数外的变量 4 栈内存:用来保存定义在函数内的非static对象。 5 动态内存:new出来的内存 6 7 分配在静态内存和栈内存的对象由编译器自动创建和销毁,
5.15 静态单链表 简单的方法: 成员变量: int e[N],//存放节点的值 ne[N],存放结点的next head,头结点指针 idx;变化的指针 初始化: void init() { head = -1;//头结点最初指向-1 idx = 0;//初始的位移指针是0; } //初始化链表 在头部位置添加: void add_to_head
C++植物大战僵尸无限阳光,无冷缩 免责声明:本代码只允许对C++编程研究,切勿用在其他非法用途 先上效果: 适合的游戏版本 植物大战僵尸年度版(来自同学的优盘emmmmm) 下载:游戏 下载:外挂 代码部分 环境visual studio 2019 编译直接用 #include <iostream> #include <windows.h> #include
C++编写通讯录控制台版 效果演示: 下载:程序 主要用到的知识点: 结构体 结构体的创建以及使用,利用数组创建多个结构体对象,在本程序中,利用宏define MAX 1000 来制约了数组的大小,从而达到控制通讯录大小的目的。 指针 AddBooks abs 本程序中用实例化了对象,并在函数中传入该对象的指针
【Horn Studio】编程专栏: 抢气球 解题思路 题目 题目描述 A教室的墙上挂满了五颜六色的气球,小朋友们都非常喜欢。刚一下课,小朋友们就打算去抢这些气球。每个气球在墙上都有一定的高度,只有当小朋友跳起来时,手能够到的高度大于等于气球的高度,小朋友才能摘到这个气球。为了公平起见
【Horn Studio】编程专栏: 抢气球 解题思路 题目 题目描述 一年一度的“跳石头”比赛又要开始了!这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有NN块岩石(不含起点和终点的岩石)。在比赛过程中,选手
Gregoire M. - Professional C++, 5th edition 关注公众号:红宸笑。 回复:电子书 即可
一、基本概念 堆(heap),在内存管理的语境下,指的是动态分配内存的区域,与数据结构里的堆不是一个概念。这里的内存,被分配之后需要手工释放,否则,就会造成内存泄漏。 C++ 标准里使用 new 和 delete 分配和释放内存的区域叫自由存储区(free store),这是堆的一个子集: new 和 delete 操作
C++允许多继承,而Java不允许多继承
C++学习笔记(2) vector的四种遍历方法测试 //迭代器测试iterator void myPrint(int a) { cout <<&a<<" = " << a << endl; } void test6() { vector<int> v; v.push_back(11); v.push_back(22); v.push_back(33); v.push_back(44); v.pus
1 #pragma once 2 #include <type_traits> 3 #include <utility> 4 #include <stdexcept> 5 6 template<typename T> 7 class Optional 8 { 9 using data_t = typename std::aligned_storage<sizeof(T), std::alignment_of
CPP A better C 重载 同名函数不同参数 //overloading,支持重载,同名函数,不同参数 void print(int i){} void print(char *str){} 但是,同名同参不同返回值是不允许的 默认参数 void fun(int i, int j, int k=3){} //注意不能写成 void fun(int i, int j=3, int k) 一旦直接给参数,
目前我学习到的很多框架都是用 c++98 写的,可能因为这些框架写成得比较早,因此没有注意 c++11的应用,但是时至今日,在 c++20 都快要问世之际,怎能还停留在 C++98 死于安乐呢? C++ 11 最强大的新特性就是她对于模板的加强,同时也是最复杂的特性(因为模板本来就复杂),但是模板的用武之地就是在
1.Install C++ connector sudo apt install libmysqlcppconn-dev 2. #include <iostream> #include <cppconn/driver.h> #include <cppconn/resultset.h> #include <cppconn/statement.h> #include <cppconn/exception.h> using namespace