C与C++
文章平均质量分 86
面向过程与面向对象编程
陆嵩
中国科学院数学与系统科学研究院 计算数学与科学工程计算研究所 科学与工程计算国家重点实验室
State Key Laboratory of Scientific and Engineering Computing,
Institute of Computational Mathematics and Scientific/Engineering Computing,
Academy of Mathematics and Systems Science,
Chinese Academy of Sciences
Email: lusong@lsec.cc.ac.cn
展开
-
vscode 远程连接 docker 容器进行 C++ 代码调试实践
vscode 远程连接 docker 容器进行 C++ 代码调试实践vscode 是可以利用远程的编译环境在本地进行打断点调试的。文章目录vscode 远程连接 docker 容器进行 C++ 代码调试实践服务器端创建容器并进行端口映射容器设置vscode 远程连接容器调试服务器端创建容器并进行端口映射docker run -it \ --name abacus2 \ --workdir /root \ --entrypoint /bin/bash \ -p 8010:原创 2022-05-24 00:08:22 · 2377 阅读 · 0 评论 -
DFT 平面波方法
DFT 平面波方法文章目录DFT 平面波方法变分法DFT 平面波方法DFT 平面波迭代解法abacus 源码阅读变分法考虑薛定谔方程,H^ψ=Eψ\hat{H} \psi=E \psiH^ψ=Eψ这里的波函数我们一般不能精确得到,所以我们一般找一个数学上可以处理的函数去逼近,ϕ≈ψ\phi \approx \psiϕ≈ψ特征值理论告诉我们,极小化能量泛函E~=⟨ϕ∣H^∣ϕ⟩⟨ϕ∣ϕ⟩\tilde{E}=\frac{\langle\phi|\hat{H}| \phi\rangle}原创 2022-05-18 22:29:40 · 970 阅读 · 0 评论 -
abacus 基本操作
abacus 基本操作文章目录abacus 基本操作下载和运行abacus输入输出源码解读下载和运行abacus设置代理export HTTP_PROXY=http://sys-proxy-rd-relay.byted.org:8118export HTTPS_PROXY=http://sys-proxy-rd-relay.byted.org:8118克隆git clone https://github.com/deepmodeling/abacus-develop.git运行方式,在参原创 2022-05-18 22:24:37 · 1183 阅读 · 0 评论 -
tmux 的简单使用记录
tmux 的简单使用记录安装apt install tmux新建一个 tmux 会话tmux new -s abacus退出 tmux 会话窗口并杀死进程exitdetach 退出 tmux 但保持后台Ctrl+B + d查看有几个 tmux 会话窗口tmux ls杀死会话tmux kill-session -t abacusattach 进入后台运行的会话窗口tmux a -t abacus增加 windows 窗口Ctrl+B + c创建一个新窗口,状原创 2022-05-18 22:22:13 · 207 阅读 · 0 评论 -
docker 的简单使用
docker 的简单使用文章目录docker 的简单使用安装 docker镜像使用容器使用容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。安装 docker清理防原创 2022-05-18 22:18:18 · 491 阅读 · 0 评论 -
《剑指 Offer(第 2 版)》系列刷题
剑指offer刷题文章目录剑指offer刷题03 [数组中重复的数字]04 [二维数组中的查找]05 [替换空格]06 [从尾到头打印链表]07 [重建二叉树]0原创 2022-03-04 04:30:00 · 670 阅读 · 0 评论 -
互联网企业刷题存档
互联网求职需要面试,面试需要做算法题,算法题需要刷题,刷题属于是个人有手就行系列。所以,我得出来的结论是,会做题不代表能力就行,只是刷题刷多了。面试官面前做不出来题目,也不代表你不行,仅仅是你没时间刷题,或者准确地说,最近一段时间没刷题。那些常年做工程的老手,给他一个力扣算法题,如果他没接触过,未必能在短时间内做出来。既然,刷题起不到筛选人才的效果,这些公司们为什么还乐此不疲地问这种没有技术含量,类似于小把戏一样的东西呢?我觉得一方面原因还是想看看你的态度吧,毕竟愿意去准备的,都是态度不错的。另外一方.原创 2022-01-03 19:03:20 · 751 阅读 · 5 评论 -
C++/C 使用过程中的经验总结荟萃琐碎汇总(持续更新)
同一个算法,不同的人写出来,效率上可能会差1000倍。写程序的同时,要注意性能。文章目录玄学命名空间左值非const结构体 set 和 mapSTL 容器选择关于-O3的过度优化内存上的性能优化关于 set 和 mapconst_cast的妙用关于函数传递数组与指针匿名表达式Debug 模式和 Release 模式全局变量Ubuntu 修改C头文件(链接库、环境变量)目录类中vector的初始化vector在使用迭代器遍历过程中,不能使用erase (),否则出错关于类型重命令explicit关键字s.原创 2021-12-12 13:34:26 · 2384 阅读 · 1 评论 -
三万字长文带你了解电子设计自动化(EDA)
三万字长文带你了解电子设计自动化(EDA)文章目录三万字长文带你了解电子设计自动化(EDA)EDA 的工业视角简介物理设计不断发展的设计环境早期物理设计:交互式支持自动设计路由布局布线中的关键支持子系统经济影响较小的物理设计工具关于物理设计EDA的未来VSLI 设计的仿真和验证事件周期模型编译代码硬件描述语言测试平台语言加速和仿真事件驱动的加速器基于周期的加速器和仿真器大规模并行通用处理器基于 FPGA 的仿真器分析模型检查器等效检查器未来:SoC综合开端逻辑优化和设计编译器RTL 综合顺序映射和优化扩大原创 2021-10-11 22:13:52 · 5351 阅读 · 5 评论 -
linux 操作系统常用操作和错误处理记录:Ubuntu 琐碎知识汇总
Ubuntu 18.xx 安装和使用systemback:Ubuntu经常玩崩溃,时常备份以防不测。另外,有些软件安装起来极其复杂,安装好后,制作成iso镜像文件,分享给别人,也是一桩好事。systemback可用于系统的备份还原以及iso镜像制作。终端安装,代码如下:sudo add-apt-repository --remove ppa:nemh/systembacksudo add-...原创 2019-12-13 21:27:48 · 946 阅读 · 1 评论 -
匹配算法告诉你为什么要找女(男)朋友一定要主动?
稳定匹配:该如何给男孩女孩们配对?文章目录稳定匹配:该如何给男孩女孩们配对?定义算法:延迟接受(盖尔沙普利算法)越主动配偶越好代码实现对于恋爱的启示纯文字描述稳定匹配(stable matching)。定义有这样一个问题,大概意思说是给一群男的和一群女的配对,每个男的对所有女的喜欢程度都有一个排序,所有女的对所有男的喜欢程度也有一个排序,男女人数相等。我们给一个不稳定对(blocking pair)的定义。假设小明的女朋友更喜欢小东,比起小东自己的女朋友,小东更喜欢小明的女朋友,这时候,(小明原创 2021-09-27 19:04:57 · 1345 阅读 · 3 评论 -
LeetCode 刷题汇总(第一阶段,随机游走)
从 0 开始 LeetCode刷题面临毕业,为了谋求一份工作,不得已走上了刷题之路。不追求解法的性能和代码的优雅,只追求在最短的时间内写出来。很多人喜欢给各种各样的方法起一个奇奇怪怪的名字,比如说“回溯”、“滑动窗口”等等,不懂这些,也可以做呀。你最后自己想了一个方法做出来了,其实默默地也就用了这些所谓的方法。这些题目我做完了,别人和我聊起什么回溯,我也不懂什么意思。我只知道,暴力出奇迹,干就完了。我们做计算数学的人的长处不在于刷题,奈何这个世界这么无奈。其实,我一直在思考,用这些小算法题去考验一原创 2021-09-15 14:07:28 · 742 阅读 · 0 评论 -
C++ 最常用的容器最常用法与排序(持续增删改)
C++ 最常用的容器最常用法与排序(持续增删改)文章目录C++ 最常用的容器最常用法与排序(持续增删改)引述vector用法其他说明map用法其他说明set用法其他说明string用法其他说明引述C++ 的 STL 容器分为顺序容器和关联容器。顺序容器:vector、deque、list(forward_list)、array、string关联容器:map 和 set(及其 multi 和 无序版本)容器适配器(不是容器):stack、queue、priority_queue所谓的顺序容器宏观原创 2021-08-30 01:03:10 · 2116 阅读 · 2 评论 -
Windows 操作系统常用操作和错误处理记录(持续更新……)
文章目录Windows 篇更改桌面存储路径还原时出现“D:\system volume information”的解决办法解决双系统重装 win 之后,进不了 Linux 系统yoga14s 虚拟机蓝屏,无法打开内核设备“\\.\VMCIDev\VMX”: 系统找不到指定的文件。你想要在安装 VMware Workstation 前重启吗?模块“DevicePowerOn”启动失败。BAT 脚本VMware tools for win 下载Ubuntu 篇一些快捷键`>a.txt` 把控制台的内容重定原创 2021-08-08 21:43:22 · 801 阅读 · 0 评论 -
C 编译链接与执行总结(头文件路径、库文件链接、环境变量……都是什么鬼?)
C 编译链接与执行总结(头文件路径、库文件链接、环境变量……都是什么鬼?)问:为什么程序编译链接又报找不到 .so 文件的错误?明明手动都能找到,也指定了路径,有 bug 吧?答:确实有 bug ,你有 bug。经常郁于程序的编译链接或者执行失败而直呼 C 是个玄学的人,十有八九都是对 C 的编译链接执行过程不慎了解,把各种搜索路径环境变量搞得一塌糊涂的人。还有救吗?有救,何弃疗。有病就得治,首先祭出杀手锏——回魂丹:包治百病,不服来辩不过现在某度搜索越来越垃圾了,经常搜不到你想搜到的东原创 2021-07-18 22:17:49 · 779 阅读 · 1 评论 -
如何快速地进出——C++ 读写数据 I/O 性能优化
如何快速地进出——C++ 读写数据 I/O 性能优化I 即 Input 表示进,O 即 Output 表示出,任何的进出,如果你没有掌握正确的姿势,就容易让工具累趴,如上图所示。比如说,读写数据,如果没有掌握正确的 IO 姿势,你的计算机很容易就累了。在多媒体技术高速发展的今天,数据的积累成指数级别的增长。数据的挖掘要求我们对海量的数据进行输入,进而处理与分析之后,将结果输出。很多时候,在算法处理数据耗时较短的情况的,数据的 I/O 成了减少时间、提高程序性能的瓶颈。要改进 I/O 性能,一个最原创 2021-07-11 23:57:44 · 3487 阅读 · 7 评论 -
反赌科普宣传——赌徒的谬误
反赌科普宣传——赌徒的谬误文章目录反赌科普宣传——赌徒的谬误游戏简单介绍不公平的游戏彩民的谬误求神拜佛,是邪?非邪?隐形的陷阱,无底的深渊在赌博中,有一种“荷兰赌式”的“倍赌”策略,即输了加赌注加倍,直到赢了为止。似乎在所有人看来,只要本金足够,似乎此法无往而不利。那么这种做法可不可取?背后潜藏的玄机又在哪呢?我们从一个简单的游戏说起。所用的概率论知识,一个正常上过大学的理工科的人都应该会懂。游戏简单介绍在我们的家乡广泛流行着一个“机会游戏”,叫做“六合彩”,其游戏规则如下:人的年龄(虚岁)对原创 2021-06-13 11:01:25 · 4466 阅读 · 11 评论 -
科学计算软件包的使用,遇到的问题及其处理汇总(持续更新……)
DROPS 篇安装和配置安装cmake,使用cmake生成ubuntu的makefile文件。将命令行切换目录到你想生成二进制脚本文件的地方,比如说新建drops/bin,在命令行下输入cmake+cmake文件地址如cmake ../src来生成二进制文件。安装boost包,下载地址。下载后使用tar -jxvf xxx.tar.bz2 来解压,解压后./bootstrap.sh运行脚本,生成b2文件,使用./b2运行它。这可能需要一些时间。之后,使用./b2 install来安装它。CB的原创 2021-03-21 11:34:09 · 514 阅读 · 0 评论 -
一个头文件告诉你 C++ 中矩阵、向量及其相关运算(矩阵乘向量等)的定义
如何优雅地写好科学计算的 C 代码文章目录如何优雅地写好科学计算的 C 代码动机实现的功能矩阵、向量定义的 h 文件一个主程序告诉你方法怎么用动机我有个同学叫王云初。那天和云初一起去上课,他坐在我旁边,抱着 Y7000P,在 Qt 里敲着计算流体力学的 C 代码,不一会儿,洋洋洒洒码出近百行的代码。定睛一看,密密麻麻地,三层、四层、五层,全是 for 循环,除了 for 循环,似乎没有别的东西了。一个搞高性能计算的精神小伙,对于写 for 循环,乐此不疲。我们做科学计算的,免不了在程序中大批次大规模原创 2021-04-20 22:07:36 · 2546 阅读 · 2 评论 -
通过例子理解头文件库文件的编译链接
通过例子理解头文件库文件的编译链接文章目录通过例子理解头文件库文件的编译链接多 cpp 和 h 文件编译链接例子关于方法实现位置的一个说明打包成静态链接库和动态链接库进行链接小小的总结网传头文件的包含和静动态链接库的链接无非就是文件的赋值黏贴而已。是耶非耶?是的话,是如何复制,又是如何黏贴,今天通过这篇文章,通过简单的例子,带你们了解一下多个 cpp 文件和 h 头文件之间是如何组织在一块的。多 cpp 和 h 文件编译链接例子为了说明这个问题,首先我写了以下几个文件,命名分别为 1main.c原创 2020-06-09 20:19:04 · 641 阅读 · 0 评论 -
C++ 高性能计算之多线程简单基础入门教程
C/C++ 高性能计算之多线程简单基础入门教程比起别人的盲目罗列函数接口,鹦鹉学舌式的解释每一个输入参数和输出参数,一味求全而无重点,我的文章更侧重于入门知识的讲解,宁缺毋滥,只有一些最简单的入门用法,先亮代码,让你以最快地速度感受到这个东西原来是这个样子。更深入的知识,可以查看文档以及其他参考。不管什么东西,都是尽可能地用新不用旧,所以,文章涉及的库和工具,都是基于 C++11 标准的。前面有相关的博文已经介绍过 MPI,OpenMP 等相关的并行技术,以及 hadoop 生态圈相关的一些知识。原创 2020-06-08 00:38:40 · 2354 阅读 · 0 评论 -
Linux 环境变量的修改与 C/C++ 头文件搜索路径和库目录的包含方法
Linux下修改环境变量的几种方式通过profile和bashrc文件修改所有用户生效的修改方式修改etc/profile文件: 为每个用户设置环境信息。当用户登录时,该文件被执行一次。 文件中添加:PATH="$PATH:新的路径",$PATH表示原有路径,路径间用冒号隔开,故有此写法。修改/etc/bashrc文件: 当 bash shell 被打开时,该文件被读取。 ...原创 2018-06-25 15:04:35 · 2506 阅读 · 0 评论 -
C++ 基础之公有、私有和保护(一句话说清楚)
C++ 基础之公有、私有和保护公有继承、私有继承和保护继承,什么七七八八的,一句话说清楚。数据成员和成员函数的公有、私有和保护类的定义我们知道,定义一个类,类里面的成员包括数据成员(属性)和成员函数(方法)。数据成员是描述类的属性的一些数据,成员函数是描述类的行为的一些数据。类的成员根据它们的访问权限,在类内被分成了三类:公有(public)、私有(private)和保护(prote...原创 2020-03-03 15:45:39 · 17887 阅读 · 11 评论 -
C++ 基础之虚函数和虚基类
C++ 基础之虚函数和虚基类C++ 有别于 C ,比较重要的就是其抽象、封装、继承和多态等特性。多态又具体地体现在重载、虚函数和模板等等之上。今天就和大家聊一聊虚函数和虚基类。虚函数我们来思考一个问题。假如子(派生)类 B 继承自父(基)类 A,现在有一个 A 类型的指针指向了 B,这时候指针只能调用 B 中继承自 A 的那一部分东西。那么,现在假设 B 中有一个和 A 中同名、同传入参数...原创 2020-02-28 00:23:53 · 6900 阅读 · 0 评论 -
C++ 基础之函数模板和类模板
C++ 基础之函数模板和类模板C++ 有别于 C ,比较重要的就是其抽象、封装、继承和多态等特性。多态又具体地体现在重载、虚函数和模板等等之上。今天就和大家聊一聊函数模板和类模板。函数模板我们来看函数重载:观察发现,这几个函数代码基本相同,只有参数类型不同,功能相同。问题就来了:写多个相同的函数体,是重复劳动,而且还可能因为代码的冗余造成不一致性。就不能找个东西去通用地表示和替代这些类...原创 2020-02-28 00:19:10 · 896 阅读 · 0 评论 -
C++ 基础之函数重载和内联函数
C++ 基础之函数重载和内联函数C++ 有别于 C ,比较重要的就是其抽象、封装、继承和多态等特性。多态又具体地体现在重载、虚函数和模板等之上。今天就和大家聊一聊函数重载和内联函数。函数重载所谓的函数重载,就是说我们可以定义不同功能的同名函数,它们传入参数类型是不一样的,当你调用这个函数名的时候,编译器会根据你给的参数类型,去匹配和调用相对于的函数。举例如下,这里交换两个数的值,使用了...原创 2020-02-28 00:12:48 · 607 阅读 · 0 评论 -
三道题入门C语言
三道题入门C语言判断输入天数为当年的第几天输入一个日期,格式为xxxx-xx-xx,判断这一天为当年的第几天?输入:2019-1-2输出:2#include<stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>int main()/*用譬如2019-12-...原创 2019-12-21 17:08:48 · 680 阅读 · 0 评论 -
从一个简单的示例入门Cmake
从一个简单的示例入门Cmake文件树形目录结构 ├─meshes│ └─poisson├─param│ ├─geom│ │ └─unspecified│ ├─levelset│ │ ├─brick_transp│ │ ├─film│ │ ├─prJump│ │ ├─twophasedrops│ │ └─unspecified│ ├─os...原创 2019-12-21 16:36:36 · 618 阅读 · 0 评论 -
**解方程组的列主元高斯消元法和Cholesky分解**
解方程组的列主元高斯消元法和Cholesky分解计算数学与科学工程计算研究所 陆嵩基本思想一般的高斯消元法的运算量为O(n3)O(n^3),这是我们所不能接受的。高斯消元法本质上就是矩阵的LULU分解,高斯消元的过程,其实蕴含着求解L−1bL^{-1}b的过程。如何矩阵的所有顺序主子式都不为零,那么LULU 分解是存在且唯一的,那么正定矩阵一定可进行这个分解。普通的高斯消元方法,引起的误差比较大原创 2017-11-13 01:21:07 · 2538 阅读 · 0 评论 -
一个c程序
作为入门,分享一个c程序,主要功能是输入一个数,判断其为几位数,并且输出各个数位上的数。# include <stdio.h># include <math.h>int main() { int a,axxxx,b,bxxx,c,cxx,d,dx,e,f; scanf("%d",&f); e=f%10; dx=f%100; d=(dx-e)/10;原创 2017-08-15 21:26:08 · 837 阅读 · 0 评论 -
Dev-C++ 5.10的调试功能
Dev-C++ 5.10的调试功能 安装好Dev-C++之后,要在工具-编译选项-代码生成/优化-连接器-产生调试信息处改成“yes”,才能进行调试。删繁就简,调试步骤如下:写好程序,点击代码窗口左边的数字设置若干断点。 按F5或者点击工具栏上的对号进行调试运行,程序运行到第一个断点处,底部窗口自动打到调试选项卡。 添加查看对变量进行监视,不想打字,有个方便的方法是用鼠标选择变量,邮件点击添原创 2017-08-15 21:16:41 · 3744 阅读 · 0 评论 -
浅谈linux下的GDB调试
浅谈linux下的GDB调试废话多说不如动手一试,且看demo(言多必失,还令人费解):gcc -g ex.c -o exgdb -tui(按操作提示回车)file exbreak 7break 12run watch nwatch linfo breakcontinuenextinfo localscontinuedelete 3print nptype nfinish(咻一下直接运行原创 2017-03-18 21:24:24 · 526 阅读 · 0 评论 -
两个c程序测试机器性能
拿两个小程序来测试机器性能crash.c#include <stdio.h>#include <stdlib.h>void f();int main(int argc,char* argv[]){ int input =0; int i; printf("Input an integer:"); scanf("%d", &input); p原创 2016-03-06 12:11:02 · 1175 阅读 · 0 评论 -
C产生正态分布随机数写入文件并读出后用快速排序法排序
基于快速排序法的正态随机数排序使用中心极限定理产生正态分布随机数使用快速排序法进行排序读写数据到记事本程序计时#include <stdio.h>#include <stdlib.h>#include <math.h>#include <time.h>#define N 1000000double norm(double mu,double sigma){ double原创 2015-12-05 15:30:32 · 2039 阅读 · 1 评论 -
郑州大学C语言实验报告册
zzu c 语言实验报告册总结 鉴于郑州大学c程序报告网上无完整答案,故将后面没有答案的部分补充,以供同学参考。for循环的使用 9.1 #include<stdio.h>void main(){ int m=3,n=5,s=1,k=1,i,l=1; for(n=1;n<=5;n++) s=s*n; for(m=1;m<=3;m++)原创 2015-12-08 23:38:11 · 4331 阅读 · 0 评论 -
如何用VC++6.0编写一个游戏
如何用VC++6.0编写一个游戏大部分同学在大学中学了面向过程的C语言,想迈向面向对象的C++,却不知如何下手。下面教大家如何用传统的VC++6.0零基础编写一个属于自己的游戏程序,过一把写游戏的瘾。打开Microsoft Visual C++6.0,新建一个C++ Source File文件;将以下代码复制黏贴,编译链接执行;/*贪吃蛇*/#include<stdio.h>#includ原创 2015-12-27 12:25:58 · 21681 阅读 · 21 评论 -
Cache 结构对程序性能的影响
Cache结构对程序性能的影响一个例子,我们来看看矩阵乘法中不同循环顺序对程序性能的影响:写一个c代码,很简单#include <stdio.h>#include <stdlib.h>#define m 1000float a[m][m];float b[m][m];float c[m][m];main() { int i,j,k,i0,j0; srand((unsign原创 2017-03-03 21:07:20 · 1188 阅读 · 3 评论 -
Neville算法
Neville算法在数值分析计算某一点的插值时,还是很不错的。#include <stdio.h>#include <math.h>#include <string.h>void main(){ double x=2; double x0[]={0,1,3}; double y0[]={1,3,2}; int i,j,n; double dx[3]原创 2016-04-03 18:58:04 · 5528 阅读 · 0 评论 -
范德蒙德和Teoplitz方程组的解法
范德蒙德和Teoplitz方程组的解法计算数学与科学工程计算研究所 陆嵩简单介绍工程中的很多实际问题的处理,比如说图像处理的某些情况,最后往往归结为比较容易处理的Vandermonde方程组和Teoplitz方程组的求解问题,因此对于这类特殊问题的快速求解方法就显得尤为重要。所谓Vandermonde方程组,指的是如下方程组: Vz=b Vz=b 其中V是Vandermonde矩阵, V=原创 2017-11-14 00:15:28 · 7115 阅读 · 0 评论 -
方程组求解的切比雪夫半迭代加速方法
方程组求解的切比雪夫半迭代加速方法计算数学与科学工程计算研究所 陆嵩背景介绍解方程组的迭代算法有Jacobi迭代,SOR方法等,但是对于一般的矩阵,这类算法不一定收敛,即使收敛,也有可能收敛得很慢。所以我们试图找到一个方法,来加速迭代算法的收敛速度。基本思想考虑迭代方法如下,GG为迭代矩阵 xk+1=Gxk+c\label{1} x_{k+1} = Gx_k+c 这里计算xk+1x_{k+1原创 2017-11-15 00:29:50 · 4147 阅读 · 5 评论