- 博客(14)
- 资源 (1)
- 收藏
- 关注
原创 结构体对齐 规则及C++程序验证
基本概念CPU一次能读取多少个字节的数据主要是看数据总线是多少位的,16位CPU一次能读取2个字节,32位CPU一次能读取4个字节,64位CPU一次能读取8个字节。并且不能跨内存区间访问,这句话的意思理解为,如果CPU是32位的话,那么可以将整个内存区间每4个字节分为一块(BLOCK),每次读取一个BLOCK的数据。那么对于下面这个结构体:struct st { char c; int i;};如果不进行对齐操作,char 的地址范围0x00000000,int的地址范围为0x0
2021-08-15 23:37:22 360
原创 C++实现读取多种编码格式文本文件
Unicode字符集首先明确一个概念:字符集(Charset)和字符编码(Character Encoding)字符集,表示的可以是字符的一个集合。比如“中文”就是一个字符集,不过这样描述一个字符集并不准确。想要更精确一点,我们可以说,“第一版《新华字典》里面出现的所有汉字”,这是一个字符集。这样,我们才能明确知道,一个字符在不在这个集合里面。比如,我们日常说的 Unicode,其实就是一个字符集,包含了 150 种语言的 14 万个不同的字符。Unicode字符集包括了我们常用ASCII码,即用0-1
2021-07-25 14:44:06 4998
原创 C++ 宏字符串拼接 宏定义系统文件路径
基础概念C++中通过宏可以对标识符进行拼接或者将标识符转化成字符串,两个#号可以拼接标识符,一个#号可以将标识符转换成字符串。1、标识符转字符串#define TOSTR1(_FILENAME_) #_FILENAME_#define TOSTR2(_FILENAME_,_SUFFIX_) #_FILENAME_"."#_SUFFIX_int main() { cout << TOSTR1(cloud) << endl; cout << TOS
2021-07-19 00:07:22 4111 3
原创 C++编写程序来判断自己的计算机是大端还是小端字节序
简介计算机有两种存储数据的方式,大端字节序(Big Endian)和小端字节序(Little Endian)。1、大端字节序:高位存放在高地址,低位存放在低地址。2、小端字节序:高位存放在低地址,低位存放在高地址。对于Int类型的数据0x12345678,我们来看看大端模式和小端模式下,计算机中的存储顺序:编写程序定义整型变量0x12345678,逐个字节输出16进制数。两种方式:1、联合体2、int类型指针(int*)强转为char*#include <iostream>
2021-07-11 16:58:20 776 1
原创 Linux中添加搜索路径(头文件、库文件、可执行文件)
转自:http://blog.chinaunix.net/uid-14735472-id-5214282.html对所有用户有效在/etc/profile增加以下内容。如果只对当前用户有效在Home目录下的/.bashrc或/.bash_profile里增加下面的内容:(注意:等号前面不要加空格,否则可能出现 command not found)#在PATH中找到可执行文件程序的路径。export PATH =$PATH:$HOME/bin#gcc找到头文件的路径export C_INCLU
2020-11-03 17:06:19 526
原创 二分法:数组中第一个大于(等于)目标的数,最后一个小于(等于)目标的数字
#include <iostream>#include <vector>using namespace std;//返回最后一个小于target的数 如果所有的数都比target大则返回第一个数int func1(const vector<int> &vec,int target){ int left = 0, right = vec.size() - 1; while (left < right) { int mid = (left
2020-06-14 16:41:36 1113
原创 直接插入排序 C++实现
原理:插入排序的基本操作是“有序插入”,也就是将元素逐一插到有序序列中,保持序列有序,从而使有序序列的长度不断增加。对数组a[n]排序时,起初a[0]被认为是长度为1的有序子序列。然后,按照有序插入法,i从1到n-1循环地将a[i]插入到有序序列中。在插入a[i]前,数组a的前半段(a[0]a[i-1])是有序段,后半段(a[i]a[n-1])是停留于输入次序的无序段。插入a[i]使a[0]~a[i]有序。也就要为a[i[找到有序位置j(0<=j<=i),将a[i]插在a[j]的位置上。
2020-05-19 22:13:38 2028
原创 冒泡排序(简单交换排序) C++实现
冒泡排序属于简单交换排序算法,另外还有基于递归交换的快速排序算法。冒泡排序是稳定排序,时间复杂度O(n^2)。快速排序是不稳定排序,时间复杂度O(nlogn)。二者都是原地排序算法,但是快速排序要用到栈空间,空间复杂度O(logn);给出冒泡排序代码://冒泡排序算法//2020-05-18#include <iostream>using namespace std;void swap(int& x, int& y){ int temp = x; x .
2020-05-18 11:53:06 245
原创 PCL+Windows10+VS2019 配置
参考博文:https://blog.csdn.net/laboirousbee/article/details/88422295存在的问题和解决办法:报错:C4996: ‘std::fpos<_Mbstatet>::seekpos’: warning STL4019: The member std::fpos::seekpos() is non-Standard解决办法:项目-属性-预处理器-预处理器定义中添加_SILENCE_FPOS_SEEKPOS_DEPRECATION_WARN
2020-05-17 11:28:54 1254
原创 快速排序算法 C++
快速排序又叫划分交换排序。由于实测结果这种排序方法速度非常快,故名快速排序。快速排序的基本原理是划分,具体说明如下:在数组a中任选一个元素作为划分元素(一般选择最左端元素)。换分元素也称中轴值或轴值。把数组a划分成左、中、右3段。其中划分元素x自成中段;其他小于x的元素都排在x之前,是左段;大于或等于x的元素都排在x之后,是右段。左段或右段中可能有一段为空。并递归地将左右各划分为3段,直到每段元素都不超过1,从而达到排序目的。//快速排序算法//2020-05-16#include <i.
2020-05-16 19:36:53 197
原创 归并排序 C++实现
参考以下博文实现归并排序,在此记录,便于温习。图解排序算法(四)之归并排序https://www.cnblogs.com/chengxiao/p/6194356.html基本思路:(递归实现)划分。将数组划分为两个长度较短的子片段,直到子片段中只有一个元素。当数组不能往下划分时,开始回溯,反复将两个长度较短的有序段合并成一个有序段(采用三指针法进行合并),直到数组中只含一个有序段。//归并排序算法//2020-05-14#include <iostream>using nam
2020-05-14 21:42:03 360
原创 堆排序 C++实现
参考下面链接博文,自己写了一个程序:https://www.cnblogs.com/chengxiao/p/6129630.html步骤1:构造初始堆,将给定无序序列构造成一个大顶堆。步骤2:将堆顶元素与末尾元素进行交换,使末尾元素最大。然后继续调整堆,再将堆顶元素与末尾元素交换,得到第二大元素。如此反复进行交换、重建、交换。//堆排序算法//2020-5-14#include <iostream>using namespace std;void adjustHeap(int
2020-05-14 17:28:26 137
原创 VS2013中的 error C3646: "noexcept"未知重写说明符问题
VS2013中的 error C3646: "noexcept"未知重写说明符问题最近在用VS2013安装realsense SDK2.0时出现了以下问题:然后发现,貌似VS2013不支持noexcept关键字,如下图noexcept没有标蓝:查询了一下VS各版本对C++11的支持进度:https://blog.csdn.net/qing666888/article/details/78...
2019-08-31 09:54:21 9559 2
WinHex v15.6_SR_12.rar
2021-08-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人