C / C++
C和C++语言相关博客
白水baishui
天光乍破
展开
-
Linux上C++与CUDA混合编程
为了更好地说明如何在Linux实现C++与CUDA的混合编程,我接下来将以实现对一个矩阵的每一个元素的取模运算。1. 头文件和文件形式要在C++中编写CUDA代码,需要引入头文件:#include "cuda_runtime.h"#include "cublas_v2.h"#include "device_launch_parameters.h"然后将文件后缀由.cpp改为.cu2. 搭建程序框架一个CUDA程序的框架类似于普通C++程序,下面我们来展示其中一种简单的形式:// mod_原创 2021-10-09 18:35:38 · 3920 阅读 · 1 评论 -
C++使用cuBLAS加速矩阵乘法运算
本博客主要参考 cuBLAS 库 词条实现,与原文不同的是,本博客:将cuBLAS库的乘法运算进行了封装,方便了算法调用;将原文的结果转置实现为了不转置,这样可以直接使用计算结果;测试并更改了乘法参数,解决了原文中更改矩阵大小时报错的问题。总的来说,本博客的代码利用cuBLAS库实现了两个矩阵相乘,提高了矩阵乘法的计算速度。test.cpp#include "cuda_runtime.h"#include "cublas_v2.h"#include <time.h>#inc原创 2021-09-05 19:14:08 · 1083 阅读 · 0 评论 -
cuBLAS产生Segmentation fault错误的解决方案
在语句cublasCreate()之后添加以下代码,就可以解决“Segmentation fault”的问题:cublasSetPointerMode(handle, CUBLAS_POINTER_MODE_DEVICE);转载 2021-09-03 16:50:56 · 248 阅读 · 0 评论 -
CentOS 下安装Eigen库
1. 下载并按照Eigen库首先打开Eigen官网(https://eigen.tuxfamily.org/index.php)。找到合适的Eigen版本,右键点击tar.gz压缩包,点击复制链接。如下例图之后在CentOS终端粘贴,下载Eigen文件:wget https://gitlab.com/libeigen/eigen/-/archive/3.3.9/eigen-3.3.9.tar.gz下载完成后解压:tar -zxvf eigen-3.3.9.tar.gz然后打开解压的目录:原创 2021-09-02 21:33:01 · 3315 阅读 · 5 评论 -
字符串的模式匹配算法——BF算法与KMP算法
#include &amp;lt;iostream&amp;gt;#include &amp;lt;string&amp;gt;using namespace std;//BF算法实现int BF(string _str, string _patnStr){ int i = 0, j = 0; while ((_str[i] != '\0') &amp;amp;&amp;amp原创 2018-12-17 15:48:04 · 1627 阅读 · 7 评论 -
破解密码验证程序
程序:由 密码验证程序 编译出来的 .exe 文件 工具:IDA Por、OllyDbg、LoadPE、UltraEdit、VS\VC++在本次破解中,由源代码编译出来的.exe文件命名为 crack.exe首先用 IDA 打开 crack.exe 在 IDA View-A 中找到 main 函数(默认情况下IDA会自动识别出main函数) 然后 按空格键,出现如下界面 ...原创 2017-11-12 12:15:56 · 9922 阅读 · 2 评论 -
解决windows下eclipse创建project时没有include导致出现“unresolved inclusion: <stdio.h>”错误的方法
在windows上安装好eclipse后创建了一个project但是却出现了如下错误:unresolved inclusion: <stdio.h>我的解决办法是安装并配置mingw。mingw下载好后运行它,会有如下界面:在basic setup下点击我打勾的两个地方,再点击Mark for installation,之后点击左上方的I...原创 2017-06-16 17:14:47 · 11333 阅读 · 5 评论 -
队列的链式存储结构 链队列(Linked Queue) C++
LinkedQueue.h#ifndef __LINKEDQUEUE_H__#define __LINKEDQUEUE_H__template &lt;class T&gt;class Node{public: T data; Node * next;};template &lt;class T&gt;class LinkedQueue{public: Linked...原创 2018-12-13 22:58:55 · 916 阅读 · 0 评论 -
队列的顺序存储结构 循环队列(Circle Queue) C++
CirQueue.h#ifndef __CIRQUEUE_H__#define __CIRQUEUE_H__const int queueSize = 100;template &lt;class T&gt;class CirQueue{public: CirQueue(); ~CirQueue(); void EnQueue(T _data); T DeQueue();...原创 2018-12-13 20:38:45 · 1530 阅读 · 0 评论 -
算法:从键盘循环输入一个整数,判断是否是素数\质数
程序分析: 1、质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。 2、nn能被mm整除,则m≤n2m≤\frac{n}{2},所以只需要穷举m∈[2,n2]m∈[2, \frac{n}{2}]即可,若在穷举过程中出现了nn%m == 0的情况则n是质数,若mm能自加到m=n2m = \frac{n}{2}则n不是质数。#include "stdio.h"int main(void原创 2017-11-21 13:25:09 · 16348 阅读 · 4 评论 -
算法:编程在一个已知的字符串中查找最长单词,假定字符串中只包含字母和空格,空格用来分隔不同单词
程序分析: 可以定义两个字符串,一个用来存放字符串,一个用来存储最长的单词。通过比较得到最长的单词,再通过元素下标来获取最长的单词。#include "stdio.h"#include "string.h"int main(void){ //定义两个数组,sentence储存字符串,word存储单词 char sentence[1024] = {}, word[64]原创 2017-11-25 16:39:41 · 5846 阅读 · 1 评论 -
使用数组来储存中文(字符串)
一个英文字母在计算机中占一个字节,一个汉字在计算机中占两个字节,所以如果使用数组来储存一个汉字,可以写成:char a[3] = { "字" };之所以a[]内写3,是因为编译器会自动在字符串后加上一个”\0”作为结束符,所以会占3个字节。同样的道理,在数组中用汉字储存一句话,例如:“红鲤鱼与绿鲤鱼与驴”:char a[19] = { "红鲤鱼与绿鲤鱼与驴" };如果要原创 2017-12-05 18:42:51 · 29377 阅读 · 1 评论 -
基于char*设计一个字符串类MyString
基于char * 设计一个字符串类MyString,并且具有构造函数、析构函数、拷贝构造函数,重载运算符“+”,“=”。myString.h#ifndef __MYSTRING_H__#define __MYSTRING_H__#include &lt;iostream&gt;using namespace std;class MyString{ public: ...原创 2018-04-24 18:31:58 · 11170 阅读 · 1 评论 -
编写一个抽象类Shape,在此基础上派生出类Rectangle和Circle
请编写一个抽象类Shape,在此基础上派生出类Rectangle和Circle,二者都有计算对象面积的函数getArea()、计算对象周长的函数getPerim()#include &lt;iostream&gt;#include &lt;cmath&gt;using namespace std;class Shape{ public: Shape(){}...原创 2018-05-07 23:17:56 · 34957 阅读 · 1 评论 -
对类Point重载"++"(自增)、"--"(自减)运算符
对类Point重载”++”(自增)、”–”(自减)运算符,要求同时重载前缀和后缀的形式。#include &amp;lt;iostream&amp;gt;using namespace std;// Point类class Point{ // 构造函数与析构函数 public: Point(int _x = 0, int _y = 0) : x(_x), y(_y){...原创 2018-05-08 23:51:52 · 12033 阅读 · 1 评论 -
QT 点击关闭按钮时提示是否退出同时按钮显示为中文
本文是对以下两篇博文的一些修改和结合:拦截QT关闭窗口的CloseEvent Qt标准对话框之QMessageBox结合两篇博文做一些修改我们可以轻易的达成:中文显示由关闭按钮事件弹出的对话框具体代码://以Dialog为例//Dialog.hclass Dialog : public QDialog{ Q_OBJECTpublic: expli...原创 2018-07-26 21:58:26 · 3345 阅读 · 1 评论 -
栈的链式存储结构 链栈(Linked Stack) C++
StackNode.h#ifndef __STACKNODE_H__#define __STACKNODE_H__template &amp;lt;class T&amp;gt;class StackNode{public: T data; StackNode&amp;lt;T&amp;gt;* nextNode;};#endifStackList.h#ifndef __STACKLI原创 2018-11-03 10:44:17 · 853 阅读 · 0 评论 -
栈的顺序存储结构 顺序栈(Sequential Stack) C++
seqStack.h#ifndef __SEQSTACK_H__#define __SEQSTACK_H__const int size = 10;template &amp;lt;class T&amp;gt;class seqStack{public: seqStack(void); virtual ~seqStack(void);public: void push(T _data)...原创 2018-10-17 21:40:49 · 843 阅读 · 0 评论 -
C\C++ 中的绝对值函数:abs()、cabs()、fabs()、labs()
不同类型的数据使用不同类型的绝对值函数:整型:int abs(int i) //返回整型参数i的绝对值 复数:double cabs(struct complex znum) //返回复数znum的绝对值 双精度浮点型:double fabs(double x) //返回双精度参数x的绝对值 长整型:long labs(long n) //返回长整型参数n的绝对值转载 2017-11-29 18:26:31 · 187793 阅读 · 3 评论 -
图解栈分析Hanoi Tower(汉诺塔)程序
汉诺塔程序伪算法:将 n 个盘子从 A 塔移动到 C 塔 分解为以下步骤: 1、将 A 塔上 n-1 个盘子借助 C 塔先移动到 B 塔; 2、将 A 塔剩下的第 n 个盘子移动到 C 塔; 3、将 B 塔上的 n-1 个盘子借助 A 塔移动到 C 塔;以下是代码:#include "stdio.h"void move(char from, char target){ printf原创 2017-12-26 21:03:35 · 5617 阅读 · 0 评论 -
输入一个字符串并使其反序输出
C语言写法:#include "stdio.h"#include "string.h"#include "math.h"void reverse(char *str){ int length = strlen(str); for (length; length &gt; 0; length--) { printf(&q原创 2017-12-27 17:38:49 · 19159 阅读 · 2 评论 -
C/C++ 中的 sizeof 运算符和 size_t 类型
我们通常会以外 sizeof 是一个函数,因为他们通常情况下会带上圆括号” () “而实际上 sizeof 是一个运算符。它的运算对象可以是具体的数据对象(例如变量名)或者数据类型,如果运算对象是一个数据类型,则必须使用圆括号将其括起来。#include "stdio.h"int main(void){ int n = 10; //以下两种写法均正确 printf("%d\n原创 2017-12-28 22:48:03 · 6439 阅读 · 0 评论 -
无穷小的比较
定义:如果limβα=0\lim \frac{\beta}{\alpha} = 0,那么就是说β\beta是比α\alpha高阶的无穷小,记作β=o(α)\beta = o(\alpha);如果limβα=∞\lim \frac{\beta}{\alpha} = \infty,那么就是说β\beta是比α\alpha低阶的无穷小;如果limβα=c≠0\lim \frac{\beta}{原创 2018-01-02 12:04:09 · 2161 阅读 · 0 评论 -
C++ 中的 cout.setf() 函数
代码cout.setf(ios_base::fixed, ios_base::floatfield)怎么解释?C++中通过cout来实现格式输出,就类似于C语言中通过printf()来实现格式输出。cout.setf()的作用是通过设置格式标志来控制输出形式,其中ios_base::fixed表示:用正常的记数方法显示浮点数(与科学计数法相对应);ios_base::floatfield表示小原创 2018-01-23 21:50:07 · 48467 阅读 · 20 评论 -
C4996 std::basic_string错误解决方案
使用basic_string类的成员函数copy()时会报C4996错误str1.copy(str, 1, 0);//报错:/*错误 C4996'std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;::copy': Call to 'std::basic_str...原创 2018-02-13 11:54:14 · 4392 阅读 · 0 评论 -
二阶常系数齐次线性微分方程的通解
*本文略去了很多证明,只记录结论 *文中的微分方程均指代二阶常系数线性微分方程二阶常系数齐次线性微分方程的形式为: ay′′+by′+cy=0ay″+by′+cy=0ay'' + by' + cy = 0 由于是二阶线性微分方程,所以它有两个解,记为y1、y2y1、y2y_1、y_2,若y1y2≠Cy1y2≠C\frac{y_1}{y_2} \neq C(即两个解之比不为常数),则y1、...原创 2018-03-25 17:13:57 · 97202 阅读 · 1 评论 -
平面方程、夹角与点到平面的距离
平面的点法式方程法向量:垂直于一个平面的非零向量叫做一个平面的法向量。 假设空间内有一点M0(x0,y0,z0)M0(x0,y0,z0)M_0(x_0, y_0, z_0)和一个向量n→=(A,B,C)n→=(A,B,C)\overrightarrow n = (A, B, C),则经过点M0M0M_0且垂直于向量n→n→\overrightarrow n的平面有且只有一个,记为ΠΠ\Pi,...原创 2018-03-30 23:43:12 · 4381 阅读 · 0 评论 -
C++构建string迭代器输出string中字符的个数
#include &lt;iostream&gt;#include &lt;string&gt;#include &lt;algorithm&gt;using namespace std;//计算字符个数int count(){ static int count = 0; return count++;} //遍历字符串 void check(char _li...原创 2018-04-21 20:52:43 · 2277 阅读 · 0 评论 -
Vector 取数组的值
一维数组://定义一个拥有三个元素一维数组,三个元素都自动初始化为0vector&lt;int&gt; vec(3);//取一维数组中“下标为0的元素”的值cout &lt;&lt; vec[0] &lt;&lt; endl;cout &lt;&lt; vec.at(0) &lt;&lt; endl;//输出00二维数组原创 2018-04-23 14:08:25 · 5210 阅读 · 0 评论 -
C++分离字符串中的数字和字符
#include &amp;lt;iostream&amp;gt;#include &amp;lt;string&amp;gt;#include &amp;lt;vector&amp;gt;using namespace std;void part(string _str, vector&amp;lt;int&amp;gt; &amp;amp;_原创 2018-05-15 14:14:25 · 13181 阅读 · 0 评论 -
QT整人小程序
想起以前在网上看到一个好玩有趣的整人小程序 我用QT进行了复现,之前也看了用C#进行复现的大佬的文章: C#复现 我的复现可以直接下载源码看,我的环境是UBUNTU 16.04 + GCC 64 bit。...原创 2018-07-29 20:55:06 · 1679 阅读 · 1 评论 -
线性表的顺序存储结构 顺序表(sequential list) C++
类定义SeqList.h#ifndef __SEQLIST_H__#define __SEQLIST_H__template&amp;amp;lt;class T&amp;amp;gt;class SeqList{public: SeqList(); SeqList(T *_data, int _length); virtual ~SeqList();public: int...原创 2018-09-16 23:58:25 · 627 阅读 · 0 评论 -
线性表的链式存储结构 单链表(Singly Linked List) C++
节点定义:Node.h#ifndef __NODE_H__#define __NODE_H__template &amp;amp;lt;class T&amp;amp;gt;struct Node{ T data; Node&amp;amp;lt;T&amp;amp;gt; * next;};#endif单链表类定义:LinkedList.h#ifndef __LINKEDLIST_H__原创 2018-09-28 22:55:10 · 676 阅读 · 0 评论 -
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
由题意我们可以设该数为x,加100后得到的完全平方数为y,再加168后得到的完全平方数为z,则有:原创 2017-09-10 15:46:40 · 28002 阅读 · 28 评论