
C++
congleetea
这个作者很懒,什么都没留下…
展开
-
动态库和共享库区别
1.什么是库在windows平台和linux平台下都大量存在着库。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows和linux的本质不同,因此二者库的二进制是不兼容的。本文仅限于介绍linux下的库。2.库的种类linux下的库有两种:静态库和共享库(动态库)。二者的不同点在于代码被载入的时刻不同。静态库的代码在编译过转载 2013-12-30 19:26:35 · 4345 阅读 · 0 评论 -
Linux中Socket建立配置详细信息
什么事sockSocket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊转载 2014-06-14 14:37:51 · 1005 阅读 · 0 评论 -
网络数据(socket)传输总结
环境限定:TCP/IP下的socket网络传输;C/C++开发语言,32/64位机。目前有两种方式对数据进行传输:1)字符流形式,即将数据用字符串表示;2)结构型方式,即将数据按类型直接传输。1)的方式保证所有的数据都是清晰的字符串明文,没有平台不一致问题,但传输的数据不定长,复合数据类型(如struct)的解析不方便。2)的方式保证数据长度固定/可控,方便对接受到数据的解析;转载 2014-06-21 23:30:43 · 2470 阅读 · 0 评论 -
C++类访问控制及继承
一、C++类的访问控制有三类:public,protected和private。类访问控制符类成员可被哪些对象访问public1、类的成员函数。2、类对象。3、友元。4、子类成员函数protected1、类的成员函数。2、友元。3、子类成员函数private1、类的成员函数。2、友元转载 2015-01-07 09:12:53 · 678 阅读 · 0 评论 -
函数调用过程探究
本文转自:http://www.cnblogs.com/bangerlee/archive/2012/05/22/2508772.html。感谢bangerlee的贡献。一,引言如何定义函数、调用函数,是每个程序员学习编程的入门课。调用函数(caller)向被调函数(callee)传入参数,被调函数返回结果,看似简单的过程,其实CPU和系统内核在背后做了很多工作。下面我转载 2015-01-06 21:42:54 · 636 阅读 · 0 评论 -
strcpy和memcpy的区别
strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。转载 2015-01-16 17:06:44 · 606 阅读 · 0 评论 -
linux下C/C++,多线程pthread
·线程创建 函数原型:int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict attr,void *(*start_rtn)(void),void *restrict arg); 返回值:若是成功建立线程返回0,否则返回错误的编号。 形式参数:pthread_t *rest转载 2015-01-16 20:58:07 · 842 阅读 · 0 评论 -
文章标题Eigen的矩阵运算使用
在ROS的Cmake中使用Eigen库进行矩阵和向量的运算和很方便。下面逐步添加他的使用方法。 1 配置 首先要在CmakeLists.txt中先进行设置: 由于Eigen是ros以外的库,所以要单独的使用 find_package(Eigen REQUIRED) 同时Eigen依赖cmake_modules。所以还要 find_package(catkin REQU原创 2015-03-12 10:47:44 · 8602 阅读 · 1 评论 -
C++库常用函数一览(<string><cctype><algorithm><cmath><cstdlib><iomanip><numeric>)
本文中提到的函数库有: 1. 标准C++库字符串类std::string的用法 begin 得到指向字符串开头的Iterator end 得到指向字符串结尾的Iterator rbegin 得到指向反向字符串开头的Iterator rend 得到指向反向字符串结尾的Iterator size 得到字符串的大转载 2015-04-22 22:03:35 · 1159 阅读 · 0 评论 -
socket
功能描述: 获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议 号TCP。#include <sys/type转载 2015-04-13 20:47:25 · 647 阅读 · 0 评论 -
继承与组合概念、区别及优缺点
1.什么是继承 A继承B,说明A是B的一种,并且B的所有行为对A都有意义 eg:A=WOMAN B=HUMAN A=鸵鸟 B=鸟 (不行),因为鸟会飞,但是鸵鸟不会。 2.什么是组合 若在逻辑上A是B的“一部分”(a part of),则不允许B从A派生,而是要用A和其它东西组合出B。 例如眼(Eye)、鼻(Nose)、口(Mouth)、耳(Ear)是头(Head)的一部分,所以类Hea转载 2015-06-03 16:44:31 · 1697 阅读 · 0 评论 -
C++中Static作用和使用方法
1、什么是static? static 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性。2、为什么要引入static? 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义一个全局的变量转载 2015-06-06 10:45:48 · 724 阅读 · 0 评论 -
const修饰类的成员函数
《Effective C++》里面说,尽量使用const,const修饰变量一般有两种方式:const T a,或者 T const *a,这两者都是一样的,主要看const位于的左边还是右边,这里不再赘述,主要来看一下当const修饰类的成员函数时,成员函数有什么特点。类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。在设计类的时候,一个转载 2015-07-28 20:41:37 · 800 阅读 · 0 评论 -
使用qtcreator时出现The specified source space "/home/xxx/src" does not exist的错误
今天新安装了ubuntu,ros和qtcreator,进行编译时出现22:42:45: Starting: "/opt/ros/hydro/bin/catkin_make"Base path: /home/xxxThe specified source space "/home/xxx/src" does not exist22:42:46: The process "/opt/ros/hydro...原创 2014-07-23 22:51:10 · 17524 阅读 · 1 评论 -
ROS中的CMakeLists.txt
在ROS的编程过程中,如果CMakeLists.txt如果写不好,编译就很难成功。如果看不懂CMakeLists.txt那么很多错误你也不知道时什么回事。所以深入了解它是很右必要的。现在我们就来看看它。 我们使用cmake进行程序编译的时候,会根据CMakeLists.txt这个文件进行一步一步的处理,然后形成一个MakeFile文件,系统再通过这个文件的设置进行程序的编译。原创 2014-06-29 16:36:25 · 16609 阅读 · 4 评论 -
ROS中QThread的使用(同时进行topic的订阅)
我原创 2014-06-30 22:33:06 · 3142 阅读 · 2 评论 -
const用法
const用法const主要是为了程序的健壮型,减少程序出错.最基本的用法:const int a=100; b的内容不变,b只能是100也就是声明一个int类型的常量(#define b =100)int const b=100; //和上面作用一样 const指针和引用一般用在函数的参数中int* m = &a; //出错,常量只能用常指针int c=转载 2014-01-05 14:52:19 · 825 阅读 · 0 评论 -
结构体和类的区别
1.C的结构体和C++结构体的区别 1.1 C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数。所以C的结构体是没有构造函数、析构函数、和this指针的。 1.2 C的结构体对内部成员变量的访问权限只能是public,而C++允许public,protected,private三种。 1.3 C语言的结构体是不可以继承的,C++的结构体是可以从其他转载 2014-01-06 23:35:43 · 852 阅读 · 0 评论 -
vector和QMap简单使用记忆qt中QPointF类型和CV中Point2f和Mat的使用细节,
头文件如下:#ifndef MAINWINDOW_H#define MAINWINDOW_H#include #include #include #include #include using namespace std;using namespace cv;class MainWindow : public QMainWindow{ Q_OBJECT原创 2014-01-06 23:19:32 · 7398 阅读 · 0 评论 -
A warning - comparison between signed and unsigned integer expressions [-Wsign-compare]的解决方法
源程序是/*********************产生观测模型****************************/void ProRobotics::GenObservations(float sd){//Generate observations.假设传感器能观察到机器人周围sd米内的所有特征 Point2f delta;原创 2014-01-20 10:41:25 · 32520 阅读 · 7 评论 -
static_cast, dynamic_cast, const_cast探讨
首先回顾一下C++类型转换:C++类型转换分为:隐式类型转换和显式类型转换第1部分. 隐式类型转换又称为“标准转换”,包括以下几种情况:1) 算术转换(Arithmetic conversion) : 在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型。 int ival = 3;double dval = 3.14159;iva转载 2014-01-23 18:04:36 · 889 阅读 · 0 评论 -
函数的三种参数传递方式
开始之前先看几个小例子:1. 程序代码如下:void Exchg1(int x, int y){int tmp;tmp=x;x=y;y=tmp;printf(“x=%d,y=%dn”,x,y)}void main(){int a=4,b=6;Exchg1 (a,b) ;printf(“a=%d,b=%dn”,a,b)}输出的结果:x=____, y转载 2014-01-16 10:27:34 · 1049 阅读 · 0 评论 -
QT调试时提示Signal name: SIGSEGV - Signal meaning: Segmentation Fault
最初我在运行QT时,点击某个功能的按钮时,界面一下就消失了。我找到这个按钮相关的函数,设置断点,分步调试:在下面这个程序处显示:Signal name: SIGSEGV - Signal meaning: Segmentation Fault。 谷歌查找之后说是This usually happens when accessing a pointer that was原创 2014-01-22 11:30:17 · 24451 阅读 · 2 评论 -
C/C++结构体总结
1 #include"iostream" 2 using namespace std; 3 4 struct TestStruct 5 { 6 int iNumber;7 char charArray[10];8 char ch;9转载 2014-04-17 20:40:05 · 927 阅读 · 0 评论 -
多线程
多线程是程序员面试时常常会面对的问题,对多线程概念的掌握和理解水平,也会被一些老鸟用来衡量一个人的编程实力的重要参考指标。不论是实际工作需要还是为了应付面试,掌握多线程都是程序员职业生涯中一个必须经过的环节。其实当你把“多线程”和你的“职业生涯”联系在一起考虑的时候,就会觉得“多线程”是多么的渺小,对,没有跨越不过的山。不过就算它很渺小,但也有可能改变你的人生轨迹。不用担心,如果你对多线程还不太熟转载 2014-04-17 20:53:11 · 765 阅读 · 0 评论 -
opencv矩阵Mat的运算——在DIP作业(图像增强)中出现的问题
本次作业是要求不用opencv中的库函数,选择两张不好的图片对其进行图像增强。我选了一张过白的image,想通过指数变换的方法对其进行图像增强。作为初级学习opencv 运用者,由于opencv没怎么编过程序,所以一开始就遇到了很多问题。1 Mat 的数据类型导致运算的错误下面是主程序:#include #include #include #include using namespace原创 2014-04-03 22:30:12 · 1292 阅读 · 0 评论 -
访问Mat图像中每个像素的值
今天百度搜资料还搜到了自己的。。。《访问图像中每个像素的值》,这是之前写的了,用的也是2.0的风格IplImage*格式,不太适用后来Mat的格式,特此重写一篇。以下例子源自《The OpenCV Tutorials --Release 2.4.2》2.2 How to scan images, lookup tables and time measurement with OpenCV转载 2014-03-27 21:33:38 · 839 阅读 · 0 评论 -
造成segment fault,产生core dump的可能原因
1.内存访问越界 a) 由于使用错误的下标,导致数组访问越界 b) 搜索字符串时,依靠字符串结束符来判断字符串是否结束,但是字符串没有正常的使用结束符 c) 使用strcpy, strcat, sprintf, strcmp, strcasecmp等字符串操作函数,将目标字符串读/写爆。应该使用strncpy, strlcpy, strncat, strlcat, snprintf,转载 2014-06-26 11:16:01 · 1063 阅读 · 0 评论 -
Eigen的使用
1Eigen在ROS中的配置: 在CMakeLists.txt中必须加上:find_package(Eigen REQUIRED)...include_directories( ${catkin_INCLUDE_DIRS} ${Eigen_INCLUDE_DIRS})由于ROS Indigo中出现的变化,需要依赖cmake_modules,因此可以在下面加入:find_pack原创 2015-06-12 09:10:14 · 5767 阅读 · 0 评论