自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 哈希表的定义

哈希表也叫散列表,它是一种可以根据关键字直接进行访问的数据结构。哈希表通过某种关系把关键字映射到表中一个位置,这样存储位置与关键字之间有一个对应的关系f,使得每个关键字key对应一个存储位置f(key)。这样在查找时,根据给定的关键字key,通过f(key)这一对应关系可快速确定包含key的记录在存储空间中的位置。这个映射的函数f叫作哈希函数,又称为散列函数,按这个思路存储记录的连续空间称为散列表或哈希表。关键字对应的存储地址称为哈希地址或散列地址。哈希表在存储时,以数据中每个元素的关键字key为.

2022-02-18 11:02:23 1042

原创 C++移动语义

右值引用是C++11标准引入的特性,右值引用至少可以解决以下两个问题:1、实现移动语义(move semantics)2、完美转发(Perfect forwarding)讲上面两个问题之前,先介绍一些相关的基础概念:1)什么是左值和右值左值:是一个可以用来储存数据的变量,有实际的内存地址,表达式结束以后依然存在。右值(非左值):是一个“匿名”的“临时变量,在表达式结束时生命周期终止。我们见到的所有具名变量是左值,而匿名变量是右值。左值可以出现在赋值符号的左边或右边,右值只能.

2020-12-10 11:16:45 829

原创 图像插值

1、最近邻插值1)原理最简单的插值方式,目标图像上(des_x,des_ y)处的像素值等于( (des_x, des_y)对应到源图像坐标为(src_x, xrc_y) ):距离(src_x, xrc_y)最近坐标点的像素值。2)源码tensorflow实现最近邻的源码如下:template <typename T, bool half_pixel_centers, bool align_corners>struct ResizeNearestNeighbor&lt..

2020-09-09 11:30:31 783

原创 make install 安装动态库、静态库以及头文件到系统/usr/local/include /usr/locla/lib后,cmake编译可执行文件,提示找不到动态库

运行ldconfig 命令 更新 /etc/ld.so.cache便可以解决问题

2020-08-26 17:51:21 1063

原创 使用Pybind11把C++代码编译成动态库so,支持Python的调用

基于ubuntu 16.04系统,使用python3调用c++生成的动态链接库1. pybind11的两种方式:1)使用pip安装pip install pybind11 -i https://pypi.tuna.tsinghua.edu.cn/simple/2)源码编译(推荐这种,方便后续CmakeLists.txt中使用find_package(pybind11 REQUIRED))pip install pytest -i https://pypi.tuna.tsinghua.

2020-08-25 10:21:38 4869

原创 Cmake编译报错:if given arguments: “11“ “IN_LIST“ “supported_standards“ Unknown arguments specified

cmake .. 编译报出if given arguments: "11" "IN_LIST" "supported_standards" Unknown arguments specified1、这个错误的主要原因是:CMakeLists.txt里cmake_minimum_required指定的cmake版本过低造成的2、解决办法是:把cmake_minimum_required修改成当前系统安装的cmake版本号就可以了...

2020-08-25 10:07:11 4735 1

原创 Python:给函数定义属性

"""1、在python中,一切都是对象,所以可以为函数定义属性2、可以使用__dict__返回对象的属性"""def func(): print("-----func-----")# 函数对象定义属性func.val = 1func()print(func.__dict__)print(func.val)"""-----func-----{'val': 1}1"""...

2020-08-20 11:44:37 512

原创 派生类继承自抽象基类时,遇到未定义的引用

在定义抽象的基类接口的时候,对于声明的构造函数和析构函数以及其他普通函数也一定要初始化,对于抽象类而言,唯一不需要初始化的就是纯虚函数。对于抽象类而言,如果不对声明的析构函数和构造函数进行函数定义,那么编译的时候会报“未定义的引用”...

2020-08-07 16:36:58 631

原创 glog安装步骤(ubuntu):

1、安装autoreconfsudo apt install autoconf automake libtool2、下载glog源文件:git clone https://github.com/google/glog.git3、根据https://github.com/google/glog底部的安装步骤安装glog:./autogen.sh./configuremake sudo make install...

2020-07-17 14:50:10 3031 4

转载 field ‘XXXXX’ has incomplete type

类或结构体的前向声明只能用来定义指针对象或引用,因为编译到这里时还没有发现定义,不知道该类或者结构的内部成员,没有办法具体的构造一个对象,所以会报错。将类成员改成指针就好了。 程序中使用incomplete type实现前置声明有助与实现数据的隐藏。要求调用对象的程序段只能使用声明对象的引用或者指针。在显式声明异常规范的时候不能使用incomplete type。...

2020-07-15 17:41:32 516

原创 静态成员函数的优点

静态成员函数会被自动分配在一个一直使用的存储区,直到退出应用程序实例,避免了调用函数时压栈出栈,速度快很多。

2020-07-15 16:45:37 426

原创 编译生成的库被可执行程序链接时报错:vtable for 类名’未定义的引用

其中的一个原因可能是:定义的类派生自基类(基类是一个纯虚函数的抽象类),派生类在头文件中重写基类的成员函数后,在源文件中定义这个成员函数时,忘记在函数成员前面使用“类名::成员函数名”。比如:// 正确的ErrorCode AsianScripts::LanguageInit(){// 错误的//ErrorCode LanguageInit(){ return kSucessCode; };...

2020-07-08 09:34:17 675 1

原创 c++:STL作为类的静态成员变量要注意的点

STL做类的静态成员变量时,必须使用常量初始化,无法使用insert等方法进行初始化。例如:std::set<int> a = {1, 23};class AsianLanguagesType{public: static std::set<int> asian_languages_type_set_; // Forbidden use AsianLanguagesType()=delete; AsianLanguagesType(const Asi

2020-07-06 16:47:49 726

转载 拷贝构造函数和赋值构造函数声明为私有的作用

转载:http://blog.csdn.net/rabbit729/article/details/4000500每个类只有一个赋值函数.  由于并非所有的对象都会使用拷贝构造函数和赋值函数,程序员可能对这两个函数有些轻视。请先记住以下的警告,在阅读正文时就会多心:  1.如果不主动编写拷贝构造函数和赋值函数,编译器将以“位拷贝”的方式自动生成缺省的函数。倘若类中含有指针变量,那么这两个缺省的函数就隐含了错误。以类String的两个对象a,b为例,假设a.m_data的内容为“hello”,b.

2020-07-06 16:03:33 421

原创 git push的时候每次都要输入用户名和密码的问题

刚开始用git push 发现每次push的时候都需要输入账号和密码,怎么能够一劳永逸呢?解决步骤如下:1、查看使用的传输协议git remote -v2、重新设置ssh的方式git remote rm origingit remote add origin git@github.com:用户名/仓库名.gitgit push -u origin master通过以上两个步骤就可以解决问题。...

2020-07-01 14:07:20 252

原创 gtest里面的断言EXPECT_EQ和ASSERT_EQ的区别

tips:主要用于记录工作中遇到的问题及解决方案最近刚开始使用gtest,对里面的断言EXPECT_EQ和ASSERT_EQ的区别有疑惑,故记录下来,以备后续查看TEST(Binary, test){ std::string strPath = "./"; OCROutputItem ocrOutputItem; IOcrPostAlg* p_ocr_post_alg = CreateIOcrPostAlg(); EXPECT_EQ(true, IsCreateSuc.

2020-07-01 11:45:44 26557

原创 多线程是可以同时读取同一个内存数据的

记录一下:多线程如果只是读取同一块内存区域的数据,没必要设置成同步线程,线程同步的目的是为了防止同一时间多个线程要修改数据,造成数据错误。所以:如果线程只是访问,完全没必要线程同步...

2020-03-13 11:13:28 4828

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除