size_t

c语言字符串处理函数

这一生的挚爱 提交于 2020-03-29 04:03:21
很高效的字符串处理函数: void *memccpy (void *dest, const void *src, int c, size_t n); 从src所指向的对象复制n个字符到dest所指向的对象中。如果复制过程中遇到了字符c则停止复制,返回指针指向dest中字符c的下一个位置;否则返回NULL。 void *memcpy (void *dest, const void *src, size_t n); 从src所指向的对象复制n个字符到dest所指向的对象中。返回指针为dest的值。 void *memchr (const void *s, int c, size_t n); 在s所指向的对象的前n个字符中搜索字符c。如果搜索到,返回指针指向字符c第一次出现的位置;否则返回NULL。 int memcmp (const void *s1, const void *s2, size_t n); 比较s1所指向的对象和s2所指向的对象的前n个字符。返回值是s1与s2第一个不同的字符差值。 int memicmp (const void *s1, const void *s2, size_t n); 比较s1所指向的对象和s2所指向的对象的前n个字符,忽略大小写。返回值是s1与s2第一个不同的字符差值。 void *memmove (void *dest, const void

c++ static

强颜欢笑 提交于 2020-03-23 05:07:07
静态全局变量 #include <iostream> using namespace std; static size_t ctr = 0; size_t count_calls() { return ++ctr; } int main() { for(size_t i=0; i < 10; ++i) { cout << "times:" << count_calls() << endl;; } } 特点 该 变量 在全局数据区分配内存 未经初始化的静态全局变量会被程序自动初始化为0 静态 全局变量 在声明它的整个文件都是可见的,而在文件之外是不可见的 结果 全局变量和全局静态变量的区别 1)全局变量是不显式用static修饰的全局变量,但全局变量默认是动态的,作用域是 整个工程 ,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量。 2)全局静态变量是显式用static修饰的全局变量,作用域是声明此变量 所在的文件 ,其他的文件即使用extern声明也不能使用。 静态局部变量 #include <iostream> using namespace std; size_t count_calls() { static size_t ctr = 0; return ++ctr; } int main() { for(size_t i=0

基于均值坐标(Mean-Value Coordinates)的图像融合算法的优化实现

谁说我不能喝 提交于 2020-03-20 01:07:44
目录 1. 概述 2. 实现 2.1. 原理 2.2. 核心代码 2.3. 第二种优化 3. 结果 1. 概述 我在之前的文章 《基于均值坐标(Mean-Value Coordinates)的图像融合算法的具体实现》 中,根据 《Coordinates for Instant Image Cloning》 这篇论文,详细论述了图像融合中泊松融合算法的优化算法——均值坐标(Mean-Value Coordinates)融合算法的具体实现。其实在这篇论文中,还提出了两种优化实现,能够进一步提升效率,这里就论述一下其优化算法的具体实现。 2. 实现 2.1. 原理 均值坐标融合算法的核心思想是算出ROI中每个点的MVC(Mean-Value Coordinates),如果ROI中存在n个点,ROI边界像素为m个点,那么该算法的时间复杂度至少为O(nm)。根据 《Coordinates for Instant Image Cloning》 的描述,MVC融合算法修正值其实是一个线性区间,只要得到其中一些关键点的融合修正值,其他点的融合修正值就可以根据周围的融合修正值线性插值出来。 因此,可以通过CGAL来对ROI多边形边界构建一个自适应三角网,以边界上每个栅格点作为约束构网,为了满足Delaunay特性,就会在ROI内部新添加一些点,这样就会出现边界小而密集,边界大而稀疏的自适应三角网

c语言qsort的使用

孤街醉人 提交于 2020-03-15 20:41:47
目的 基于快速排序对数组进行排序,数组元素可以是结构体。 前提 qsort属于内置函数,需要包含头文件 stdlib.h 函数原型 void qsort( void *ptr, size_t count, size_t size,int (*comp)(const void *, const void *) ); /** void *ptr:空指针, 指向需要排序的数组 size_t count:数组元素个数,size_t在32位机器上unsigned int(4byte),64位机器上unsigned long(8byte) size:数组元素的字节数大小,通常用sizeof()来计算,平台不同,同一类型的变量占据的字节数可能不用,增强可移植性 int (*comp)(const void *, const void *) : 函数指针,将函数名作为参数,该函数的形参的类型均为const void *,函数外表是一样的,内容却有所不同,返回值类型相同 **/ 用户自定义函数 指明具体的比较对象 int cmp(const void *a, const void *b); // 自定义函数内容,若果a值大于b值,返回1, { /** 在函数内部将const void* 转换成实际的类型; **/ //默认升序写法 if ( *(MyType*)a < *(MyType*)b )

C++ string中find() 用法

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-02 04:14:11
string中 find()的用法 rfind (反向查找) (1)size_t find (const string& str, size_t pos = 0) const; //查找对象--string类对象 (2)size_t find (const char* s, size_t pos = 0) const; //查找对象--字符串 (3)size_t find (const char* s, size_t pos, size_t n) const; //查找对象--字符串的前n个字符 (4)size_t find (char c, size_t pos = 0) const; //查找对象--字符 结果:找到 -- 返回 第一个字符的索引 没找到--返回 string::npos(代表 -1 表示不存在) 例子:   std:: size_t found = str.find(str2);   if (found!=std::string::npos)    cout<<found<<endl; 参考文档: http://blog.csdn.net/youxin2012/article/details/9162415 来源: https://www.cnblogs.com/lhwblog/p/6425988.html

C语言指针的长度和类型

爱⌒轻易说出口 提交于 2020-02-29 06:27:00
本文地址: http://www.cnblogs.com/archimedes/p/point-length-type.html ,转载请注明源地址。 如果考虑应用程序的兼容性和可移植性,指针的长度就是一个问题,在大部分现代平台上,数据指针的长度通常是一样的,与指针类型无关,尽管C标准没有规定所有类型指针的长度相同,但是通常实际情况就是这样。但是函数指针长度可能与数据指针的长度不同。 指针的长度取决于使用的机器和编译器,例如:在现代windows上,指针是32位或是64位长 测试代码: #include<stdio.h> #include<math.h> #include<stdlib.h> #include<stddef.h> struct p{ int n; float f; }; int main() { struct p *sptr; printf("sizeof *char: %d\n", sizeof(char*)); printf("sizeof *int: %d\n", sizeof(int*)); printf("sizeof *float: %d\n", sizeof(float*)); printf("sizeof *double: %d\n", sizeof(double*)); printf("sizeof *struct: %d\n", sizeof

vector容器

岁酱吖の 提交于 2020-02-28 13:47:30
1 /* 2 vec.begin() //指向迭代器中第一个元素。 3 vec.end() //指向迭代器中末端元素的下一个,指向一个不存在元素。 4 vec.push_back(elem) //在尾部加入一个数据。 5 vec.pop_back() //删除最后一个数据。 6 vec.capacity() //vector可用空间的大小。 7 vec.size() //返回容器中数据个数。 8 vec.empty() //判断容器是否为空。 9 vec.front() //传回第一个数据。 10 vec.back() //传回最后一个数据,不检查这个数据是否存在。 11 vec.at(index) //传回索引idx所指的数据,如果idx越界,抛出out_of_range。 12 vec.clear() //移除容器中所有数据。 13 vec.erase(iterator) //删除pos位置的数据,传回下一个数据的位置。 14 vec.erase(begin,end) //删除[beg,end)区间的数据,传回下一个数据的位置。注意:begin和end为iterator 15 vec.insert(position,elem) //在pos位置插入一个elem拷贝,传回新数据位置。 16 vec.insert(position,n,elem) /

C ++模板typedef

五迷三道 提交于 2020-02-27 13:51:12
我有一堂课 template<size_t N, size_t M> class Matrix { // .... }; 我想做一个 typedef 来创建一个 Vector (列向量),它等效于大小为N和1的 Matrix 。 typedef Matrix<N,1> Vector<N>; 产生编译错误。 以下创建类似的东西,但不完全是我想要的东西: template <size_t N> class Vector: public Matrix<N,1> { }; 是否有解决方案或不太昂贵的解决方法/最佳实践? #1楼 C ++ 11添加了 别名声明 ,这些 声明 是 typedef 泛化,允许使用模板: template <size_t N> using Vector = Matrix<N, 1>; Vector<3> 类型与 Matrix<3, 1> Vector<3> 等效。 在C ++ 03中,最接近的近似值为: template <size_t N> struct Vector { typedef Matrix<N, 1> type; }; 在这里,类型 Vector<3>::type 等效于 Matrix<3, 1> 。 来源: oschina 链接: https://my.oschina.net/stackoom/blog/3173987

C++中vector使用问题01_size-1无限循环

老子叫甜甜 提交于 2020-02-26 11:58:17
1 问题 在对一个vector进行循环处理时,例如排序,会经常这么写: for (size_t i = 0; i < vec.size() - 1; i++) { for (size_t j = i + 1; j < vec.size(); j++) { // do something } } 这里会出现无限循环。 2 分析 如果vec的元素数量为0,那么size_t类型的 i=0-1 ,在计算里就变成了最大值,所以导致出现进入死循环的情况。 切记,不要犯这种低级错误。 3 解决办法 去掉减1即可。或者加个判断。 for ( size_t i = 0 ; i < vec.size ( ) ; i++ ) { for ( size_t j = i + 1 ; j < vec.size ( ) ; j++ ) { // do something } } 来源: CSDN 作者: 张欣-男 链接: https://blog.csdn.net/sdlypyzq/article/details/104512276

使用QT显示OpenCV读取的图片

走远了吗. 提交于 2020-02-24 01:06:12
文章目录 1. 概述 2. 实现 2.1. 代码 2.2. 解析 3. 结果 1. 概述 OpenCV自带了一部分常用的GUI功能,但是更多的图像处理功能需要其他GUI框架来辅助实现,这里通过QT来显示OpenCV读取的图片。 2. 实现 在QtCreator中新建一个基于QMainWindow的应用: 其中QImageShowWidget就是用于显示图像的控件,它是继承于QWidget实现的,可以将其嵌入QMainWindow的centralwidget中: QImageShowWidget是自定义的显示组件,可以首先在QtCreator的设计师界面拖入一个QWidget,再通过“窗口部件提升”功能提升为QImageShowWidget。 2.1. 代码 qimageshowwidget.h代码如下: # ifndef QIMAGESHOWWIDGET_H # define QIMAGESHOWWIDGET_H # include <QWidget> class QImageShowWidget : public QWidget { Q_OBJECT public : explicit QImageShowWidget ( QWidget * parent = nullptr ) ; ~ QImageShowWidget ( ) ; bool LoadImage ( const