![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++ 基础知识
吃我老猪一钉耙
这个作者很懒,什么都没留下…
展开
-
枚举enum
#include <stdio.h>enum ENUM_TEST{ en0, en1, en2, en3 = 9, en4, en5 = 8, en6,};int main(){ printf("en0: %d\n", en0); printf("en1: %d\n", en1); printf("en2: %d\n", en2); print...原创 2019-09-11 10:35:40 · 165 阅读 · 0 评论 -
C++类的const类型成员变量
#include<iostream>using namespace std;class MyClass{public: MyClass(const int a, float b); ~MyClass(); const int const_varible;private:};//只能在构造函数参数行中对const类型成员变量初始化//不能在构造函数中初始化...原创 2018-07-27 23:10:02 · 1468 阅读 · 0 评论 -
C++ 私有构造函数的作用
转载自:https://blog.csdn.net/koudaidai/article/details/7546661很多情况下要求当前的程序中只有一个object。例如一个程序只有一个和数据库的连接,只有一个鼠标的object。通常我们都将构造函数的声明置于public区段,假如我们将其放入private区段中会发生什么样的后果?这意味着什么? 当我们在程序中声明一个对象时,编...转载 2018-07-26 21:40:41 · 1066 阅读 · 0 评论 -
C/C++内存分配(二)
这是一篇转发的文章,我对他进行了格式化而已,原文出处不详。一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配...转载 2018-07-26 21:38:11 · 202 阅读 · 0 评论 -
C/C++内存分配(一)
转载自:https://www.cnblogs.com/willowcc1803/p/8635170.html一、内存布局1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量值等,其操作方法类似数据结构中的栈。2、堆区(heap):一般由程序员分配释放,与数据结构中的堆毫无关系,分配方式类似于链表。3、全局/静态区(static):全局变量和静态变量的存储是放在...转载 2018-07-26 21:11:51 · 292 阅读 · 0 评论 -
C++函数指针
#include <iostream>using namespace std;int addition(int x, int y){ return x + y;}int subtraction(int x, int y){ return x - y;}//============================================//double...原创 2018-07-26 12:38:01 · 143 阅读 · 0 评论 -
类的静态成员变量是map类型(二)
#include <map>#include <iostream>using namespace std;class MyClass{public: typedef std::map<int, int> map_str_int; //引用 static map_str_int& Registry(); static void A...原创 2018-07-26 11:38:47 · 742 阅读 · 0 评论 -
类的静态成员变量是map类型(一)
#include <map>#include <iostream>using namespace std;class MyClass{public: typedef std::map<int, int> map_str_int; static map_str_int msi; static void Add_map_str_int(int...原创 2018-07-26 11:33:12 · 2007 阅读 · 0 评论 -
C/C++动态宏定义变量
/* * test_define.cpp * * Created on: Mar 30, 2018 * Author: zlf */#includeusing namespace std;#define New_Variable(name, i) int name##iint main(){ cout<<"hello main"<<endl; New_Var原创 2018-03-30 22:26:59 · 6486 阅读 · 0 评论 -
C++二维vector
/* * vector2D_test.cpp * * Created on: Mar 30, 2018 * Author: zlf */#include<iostream>using namespace std;#include<vector>#include<string>/* <> 尖括号""双引号包含头文件...原创 2018-03-30 18:25:07 · 667 阅读 · 0 评论 -
Caffe学习(十)protobuf及caffe.proto解析
使用protobuf的原由一个好的软件框架应该要有明确的输入和输出,对于CNN网络而言,其主要有两部分组成:网络具体结构和网络的具体优化算法及参数。对于框架的使用者而言,用户只需输入两个描述文件即可得到对该网络的优化结果,这无疑是非常方便的。caffe框架选择使用谷歌的开源protobuf工具对这两部分进行描述,解析和存储,这一部分为caffe的实现节省了大量的代码。如前面转载 2018-02-26 09:05:34 · 257 阅读 · 0 评论 -
用Google的gflags优雅的解析命令行参数
写了这么多年的Linux下C/C++代码,一直使用getopt_long来解析命令行参数,同时定义一个全局的struct来保存各个命令行参数的值。虽然用得比较“繁琐”,但也安于现状。最近突然发现了Google早在多年前就开源了一个解析命令行参数的“神器”gflags。赶紧来爽一把。安装 1、去官网下载一个最新的版本(gflags-2.1.1.tar.gz)。2、现在流行cmake的构建转载 2018-02-25 23:28:30 · 169 阅读 · 0 评论 -
gflags解析命令行参数, glog输出日志文件
#include #include #include using namespace std; //DEFINE_xxxxx(参数名, 默认值, --help时的说明文字) 定义命令行参数,//注意是全局。DEFINE_int32(iterations, 50, "The number of iterations to run."); int main(int ar原创 2018-02-25 23:13:27 · 1755 阅读 · 0 评论 -
C++ map使用
#include#include#includeusing namespace std;int main(){ typedef map Commodity_VS_Price; Commodity_VS_Price commodity; commodity["soap"] = 4.5; commodity["towel"] = 12.0; commodity.insert(原创 2018-02-25 12:27:48 · 206 阅读 · 0 评论 -
内存指针
#include "stdio.h"#include "stdlib.h"int main() { int ROW = 3; int COL = 3; int* P = (int*)malloc(sizeof(int)*ROW*COL); int** PP = (int**)malloc(sizeof(int*)*ROW); for (int i=0; i<ROW; i...原创 2018-11-01 10:18:40 · 188 阅读 · 0 评论 -
C/C++中,多个指针指向同一个内存,只能free一次
#include<stdio.h>#include<malloc.h>int main(){ printf("hello main\n"); int N = 1000; int* p1 = (int*)malloc(N * sizeof(int)); int* p2 = p1; //同一个内存地址只能free一次( free(p1);和free(p2...原创 2018-11-22 10:14:54 · 3260 阅读 · 0 评论 -
makefile1
#include "stdio.h"int main(){ printf("LINE: %d\n", __LINE__); return 0;}#第一个makefile脚本#(命令开头是一个Tab不然报错:*** missing separator. Stop.)#没有逗号,加逗号不打印$(info,"begin compile")#首先执行没有缩进的行...原创 2019-05-30 14:47:15 · 105 阅读 · 0 评论 -
undeclared here (not in a function)
(1)include 头文件(2)cmakelist.txt 中添加头文件原创 2019-09-09 09:37:38 · 9701 阅读 · 0 评论 -
结构体数组的定义
1、先定义结构体类型,再定义结构体数组struct student { int num; char name[20]; char sex; int age;};struct student stu[2];2、定义结构体类型的同时定义结构体数组struct student { int num; char name[20]; ...转载 2019-08-28 11:38:20 · 5394 阅读 · 1 评论 -
调用函数一定要包含头文件
调用函数一定要包含头文件否则返回值不能正确接收一系列莫名其妙的错误Description Resource Path Location Typeimplicit declaration of function \u2018evaluator\u2019 [-Wimplicit-function-declaration] main.c /Person...原创 2019-07-08 22:14:02 · 958 阅读 · 0 评论 -
互斥锁(mutex)
参考:深入理解linux互斥锁(mutex)参考:Linux C互斥锁和条件变量(POSIX标准)参考:线程同步之互斥对象(通俗易懂)参考:多线程同步与并发访问共享资源工具—Lock、Monitor、Mutex、Semaphore参考:C语言多线程编程 死锁解析参考:利用主线程与子线程间的消息通讯,实现任务处理队列.子线程中创建不会阻塞执行的窗口参考:C++11 实现多线程...转载 2019-06-25 21:45:08 · 260 阅读 · 0 评论 -
boost编译 Win10+VS2015
VS2015 x64 本机工具命令提示符,以管理员身份运行::compile_boost.batcd C:/caffe_draft/thirdparty/boost_1_68_0::dir::bjam --show-librariesgoto begin(1)默认是32位库 address-model=64,生成64位库(2)默认所有libraries全部编译,但是加...原创 2019-06-12 12:49:29 · 367 阅读 · 0 评论 -
c++并发编程之互斥锁(mutex)的使用方法
转载:c++并发编程之互斥锁(mutex)的使用方法方法1:直接操作 mutex,即直接调用 mutex 的lock / unlock函数#include <iostream>#include <boost/thread/mutex.hpp>#include <boost/thread/thread.hpp>boost::mutex ...转载 2019-06-25 15:33:15 · 167 阅读 · 0 评论 -
.so: undefined reference to
bin/ld: warning: libstdc++.so.6, needed by /home/zhenglf/Documents/VIP/drivers/driver_860/driver_ovxlib_app/6.4.0.pre8/build/sdk/drivers/libLLVM_viv.so, not found (try using -rpath or -rpath-link)...原创 2019-06-20 08:59:01 · 2316 阅读 · 1 评论 -
C++ 中的模板类声明头文件和实现文件分离后,如何能实现正常编译?
创建的对象 是属于模板类实例化后的类的,而不是属于模板类的。换言之模板类不进行实例化就不能创建对象。《C++ Template》第六章讲过这个问题组织模板代码有三种方式1.包含模型(常规写法 将实现写在头文件中)2.显式实例化(实现写在cpp文件中,使用template class语法进行显式实例化)3.分离模型(使用C++ export关键字声明导出)第三种方式理论最优,但...转载 2019-06-04 00:28:25 · 124 阅读 · 0 评论 -
Segmentation fault
可能的原因(1)文件以及文件夹的权限,导致无法读写和执行。chmod 777 -R ../chmod +X -R ../原创 2019-06-15 11:19:15 · 416 阅读 · 0 评论 -
C++前置声明 forward declaration
// main.cppint main(){ return 0;}// a.h#pragma once#include "b.h"class A{ B* b;};#if 0// b.h//错误#pragma once#include "a.h"class B{public: A *c;};#endif#if 0// b...原创 2019-06-03 22:10:35 · 269 阅读 · 0 评论 -
函数指针
#include <stdio.h>#include <string>using namespace std;#define Debug #ifdef Debug#define PrintLog printf("Function: %s Line: %d\n", __FUNCTION__,__LINE__);#else#define PrintLog...原创 2019-06-01 21:51:10 · 99 阅读 · 0 评论 -
boost::shared使用
#include <stdio.h>#include <boost/shared_ptr.hpp>#include <string>#include <iostream>using namespace std;class A {public: A(string a) { cout << "Hello " &l...原创 2019-06-12 22:17:16 · 171 阅读 · 0 评论 -
C/C++用宏定义函数
#include "stdio.h"#define ADD \int add(int a, int b) \{ \ int c = a+b; \ printf("c=%d\n",c); \ return c; \}namespace ns{ ADD; int a = 2; int b = 3; int c = add(a, b);...原创 2019-05-31 21:38:45 · 2733 阅读 · 0 评论 -
libOpenVX.so: file not recognized: File format not recognized
参考:linux交叉编译时报错:file not recognized: File format not recognized/home/zhenglf/Documents/VIP/drivers/driver_810/6.3.1.9/build/sdk/drivers/libOpenVX.so: file not recognized: File format not recognized...原创 2019-06-05 10:00:46 · 1563 阅读 · 0 评论 -
C++ 函数指针
#includeusing namespace std;char Fun1(int a){ cout<<"in Fun1 a="<<a<<endl; return 0;}double Fun2(char a){ cout<<"in Fun2 a="<<a<<endl; return 0;}//形式1:返回类型(*函数名)(参数表)char (*pFun1)(int)原创 2018-02-25 12:52:49 · 144 阅读 · 0 评论 -
C++ 二维数组
#include using namespace std; int main() { int ROWS = 10, COLS=3; int **ha = NULL; int *dc = NULL; cudaError_t res; ha = (int**)malloc(ROWS*sizeof原创 2017-11-24 17:16:01 · 239 阅读 · 0 评论 -
C/C++ ? 问号运算符
#includeusing namespace std;/* * ?: * 在运算中,首先对第一个表达式进行检验, * 如果为真,则返回表达式2的值; * 如果为假,则返回表达式3的值。 * * */int main(int argc, char* argv[]){ int a = 1; int b = 2; int c = (a==b) ? 3 : 4; co原创 2017-12-05 13:52:14 · 16627 阅读 · 0 评论 -
int argc, char* argv[]
argc参数个数 argv[]参数内容,第0个是程序名 ,以后的依次是在命令行输入的参数#includeusing namespace std;int main(int argc, char* argv[]){ cout<<"argc:"<<argc<<endl; for(int i=0; i<argc; i++) { cout<<"argv[" <<i <<原创 2017-12-05 13:40:40 · 188 阅读 · 0 评论 -
C++ error here is inaccessible
../sfdi.cu(56): error: "Fitting::Fitting()"../././Fitting.h(19): here is inaccessible构造函数没有申明为: public/* * Fitting.h * * Created on: Nov 24, 2017 * Author: zlf */#ifndef FITTI原创 2017-11-24 12:35:01 · 3451 阅读 · 0 评论 -
C/C++中extern的使用,引用另一个文件中的变量
/* * etn.cu * * Created on: Dec 20, 2017 * Author: zlf */#include "var.h"#include "var1.h"extern int b;int main(){ var(); var1(); b = 222; cout<<"在 main() 中改变变量b使得 b原创 2017-12-20 21:32:32 · 3702 阅读 · 0 评论 -
CUDA并行排序(1)——双调排序(unsigned int型数据)
#include #includeusing namespace std;#define CHECK(res) if(res!=cudaSuccess){exit(-1);}__global__ void helloCUDA(unsigned *indata, unsigned int len){ //在核函数内部定义的变量,没有 __shared__ 都是寄存器变量 //,每一个原创 2017-12-08 18:07:10 · 1298 阅读 · 0 评论 -
CUDA并行排序(4)——双调排序(二维double型数据)
#include #include#include#include using namespace std;#define CHECK(res) if(res!=cudaSuccess){exit(-1);}__global__ void helloCUDA(double **dp_out_params, unsigned int len){ //在核函数内部定义的变量,没有 _原创 2017-12-09 08:40:18 · 900 阅读 · 1 评论 -
C++命名空间 namespace的作用和使用解析
C++命名空间 namespace的作用和使用解析一、 为什么需要命名空间(问题提出)命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中 常见的同名冲突。在 C语言中定义了3个层次的作用域,即文件(编译单元)、函数和复合语句。C++又引入了类作用域,类是出现在文件内的。在不同的作用域中可以定义相同名字的变量,互不于扰,系统能够区别它们。1、全局变量的作用转载 2017-11-18 21:24:42 · 164 阅读 · 0 评论