Processing math: 100%

随笔分类 -  c++

断断续续看《C++ primer》
共轭梯度法示例代码
摘要:(未经允许,不得转载) 共轭梯度法真是个漂亮的算法。最近写了个示例代码,录在这里吧。 参考文献: [1] 马红儒,“计算物理讲义” 1. 算法 Ref. [1],以及很多教材中有很多介绍,我自己写的讲义里也有,所以懒得在这里做叙述了,好像有本 painless conjugate gradient 阅读全文

posted @ 2022-10-04 22:01 luyi07 阅读(273) 评论(0) 推荐(0) 编辑

小矩阵相乘效率对比:lapack, cblas, 手写函数
摘要:我们需要做很多很多小矩阵相乘(维数只有几十),但是次数很多,所以用哪个矩阵库的函数对我们很重要。这里写一个很小的测试代码,测试lapack(包含着朴素的blas),cblas,还有手写函数,对比它们做小矩阵相乘的效率。 对于给定的维数,这三种办法,每种都做1000次方阵相乘AB=C,每次相乘 阅读全文

posted @ 2021-11-16 18:22 luyi07 阅读(843) 评论(0) 推荐(0) 编辑

c++ 中的下三角阵矩阵元标记
摘要:若有一个下三角阵,不包括对角元,其矩阵元为 Aij,    i=1,,n1,    j=0,,i1. 那么,可以用一维数组储存这些矩阵元: a[k]=Aij,   k=i(i1)/2+j. 这样可以将 阅读全文

posted @ 2021-06-29 19:32 luyi07 阅读(186) 评论(0) 推荐(0) 编辑

求解实数线性方程组:lapack dgesv
摘要:1. 参考来源 参考 lapack 官网上的源码,其中有 dgesv 函数的使用说明:http://www.netlib.org/lapack/lapack-3.1.1/html/dgesv.f.html 其算法就是教科书式的 LU 分解+换行。 2. 测试 然后写一个小代码测试了一下,做一个最简单 阅读全文

posted @ 2021-06-08 11:17 luyi07 阅读(1320) 评论(0) 推荐(0) 编辑

c++中的复数
摘要:参考来源:http://c.biancheng.net/view/703.html 1. 复数模板为 complex,include就可以用了,具体可以使用 complex<float>, complex<double>, complex<longdouble> 2. 加减乘除和普通的浮点数一样使用 阅读全文

posted @ 2021-03-25 14:57 luyi07 阅读(704) 评论(0) 推荐(0) 编辑

c++ 读取标准输入中的一行,然后从行首提取数字、字符串
摘要:#include<iostream>using namespace std;#include<string>#include<sstream> int main(){ int Np, Nn; cout<<"input a line: "<<endl; string line; getline(cin 阅读全文

posted @ 2021-03-10 10:49 luyi07 阅读(628) 评论(0) 推荐(0) 编辑

《c++ primer》Chap5 Statements
摘要:1. 语句(statements) ival+5 是一个表达式(expression),但加上一个分号以后,就是一个语句: ival+5; 就是一个语句。只不过这个语句得到 ival+5 的值以后,将之丢弃了。 2. 空语句 ; 分号前面没有内容,就是一个空语句,有时在循环中可以使用,比如 whil 阅读全文

posted @ 2020-04-22 10:12 luyi07 阅读(138) 评论(0) 推荐(0) 编辑

valgrind试用笔记
摘要:valgrind是一款功能齐全的代码诊断软件,Ubuntu下可以获取安装 sudo apt-get install valgrind 官网上可以下载 Manuel.pdf。 可以诊断内存泄漏 g++ xxx.cpp valgrind --tool=memcheck ./a.out 它会汇报内存漏点。 阅读全文

posted @ 2020-04-18 13:34 luyi07 阅读(191) 评论(0) 推荐(0) 编辑

《c++ primer》3.5 array 小结
摘要:array的长度是静态的,即在编译阶段就已经确定。没有 vector 灵活,但性能一般更强。 1. 声明 维数必须是一个 constant expression,另外数组中每个单元必须指明类型(不能用auto),必须是对象,不能是别名(reference)。 1 int arr[10]; 2 int 阅读全文

posted @ 2020-04-13 13:49 luyi07 阅读(167) 评论(0) 推荐(0) 编辑

《c++ primer》chap8 The IO library 小结
摘要:8.1 IO 类 iostream 头文件:istream, ostream, iostream类 fstream 头文件:ifstream, ofstream, fstream类,从istream...继承 sstream 头文件:istringstream, ostringstream, str 阅读全文

posted @ 2020-03-24 21:57 luyi07 阅读(153) 评论(0) 推荐(0) 编辑

《c++ primer》3.4 迭代器(iterator)
摘要:1. 迭代器(iterator)可以指向 container(比如string, vector等)的任意一个成员,也可以向前或向后移动若干单位。所有的 library container 都有 iterator,但不一定支持下标操作,如 s[0]。所以用 iterator 来引用 container 阅读全文

posted @ 2020-03-22 10:18 luyi07 阅读(246) 评论(0) 推荐(0) 编辑

《c++ primer》3.1 声明命名空间 小结
摘要:1. 如果不声明命名空间,每次使用 cin, cout, endl 时,就需要加上域算符 ::,比如 std::cin >> i; std::cout << i << std::endl; 2. 可以在代码前面加上 using 声明,比如 using std::cin; using std::cou 阅读全文

posted @ 2020-03-21 20:38 luyi07 阅读(121) 评论(0) 推荐(0) 编辑

c++ 流格式控制符
摘要:参考自https://blog.csdn.net/thisispan/article/details/7450411 1. setw(n) 设置输出宽度为n个空格那么大;如果n大于后面输出的内容宽度,则默认右对齐;如果n小于后面输出内容的宽度,则相当于没有加setw(n) 作用域:一次输出,即下一个 阅读全文

posted @ 2019-10-27 19:24 luyi07 阅读(259) 评论(0) 推荐(0) 编辑

《c++ primer》3.3 vector 类型小结
摘要:1. 头文件 #include<vector> using std::vector; 2. 声明 vector是一个类模板,vector中的元素是什么类型,需要在<>内说明: vector<int> ivec; vector<Sales_item> Sales_vec; vector<vector< 阅读全文

posted @ 2019-10-08 05:37 luyi07 阅读(153) 评论(0) 推荐(0) 编辑

《c++ primer》3.2 string 小结
摘要:1. 头文件 #include<string> using std::string; 当然,如果打了 using namespace std; 就不需要再打 using std::string; 按我理解,namespace std 就包括了string 相关的所有声明了。 2. 声明string变 阅读全文

posted @ 2019-10-08 04:35 luyi07 阅读(199) 评论(0) 推荐(0) 编辑

C 语言命令行参数 argc 与 argv
摘要:参考来源:https://blog.csdn.net/u014106566/article/details/84141718 #include<iostream> using namespace std; int main(int argc, char ** argv){ cout<<" argc 阅读全文

posted @ 2019-05-05 17:50 luyi07 阅读(234) 评论(0) 推荐(0) 编辑

c++ 栈内数组读写效率 v.s. 堆上数组读写效率
摘要:函数内定义的数组都在栈内存上。 new 出来的数组在堆内存上(栈上的指针指向它们)。 想知道这两种方法定义的数组的读写效率,写了个小实验程序: #include<iostream> using namespace std; #include<cmath> #include<time.h> #defi 阅读全文

posted @ 2019-03-11 18:06 luyi07 阅读(453) 评论(0) 推荐(1) 编辑

开辟栈内存速度 v.s. 开辟堆内存速度
摘要:在函数内直接定义多维数组,即可在栈上开辟内存。 用栈上指针 new 出堆内存,定义多维数组,即在堆上开辟内存。 可以比较这两种的速度,做个小实验,心里有个数。 代码如下: #include<iostream> using namespace std; #include<cmath> #include 阅读全文

posted @ 2019-03-11 16:32 luyi07 阅读(207) 评论(0) 推荐(0) 编辑

栈内矩阵相乘 v.s. 堆内矩阵相乘
摘要:1. 栈内数组相乘 可以定义局域变量:三个 500 x 500 的数组,共占据 3 x 500 x 500 x 8 = 6 x 10^6 bytes,差不多 6 M,栈空间约为 不到 8 M。然后进行矩阵相乘,计时得到耗时。 2. 通过栈内指针 new 出堆内存,进行矩阵相乘 定义 double * 阅读全文

posted @ 2019-03-09 22:01 luyi07 阅读(148) 评论(0) 推荐(0) 编辑

c++ 内存管理方式
摘要:参考自: [1] https://www.cnblogs.com/xuelisheng/p/9278800.html [2] https://www.cnblogs.com/findumars/p/5929831.html?utm_source=itdadao&utm_medium=referral 阅读全文

posted @ 2019-03-09 14:07 luyi07 阅读(138) 评论(0) 推荐(0) 编辑

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示