
c++技术
青松愉快
动漫什么的最好了
展开
-
C++ 值传递、指针传递、引用传递详解
最近写了几篇深层次讨论数组和指针的文章,其中提到了“C语言中,所有非数组的形式参数传递均以值传递形式”数组和指针背后——内存角度语义"陷阱"---数组和指针而关于值传递,指针传递,引用传递这几个方面还会存在误区, 所有我觉的有必要在这里也说明一下~下文会通过例子详细说明哦值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用转载 2020-12-16 16:51:12 · 2605 阅读 · 1 评论 -
C++ 指针和引用 吐血整理 Pointer&Reference
说道C++的指针,很多人都很头疼,也很confuse。经常把它和变量名,引用(reference)等混淆,其实这最主要的原因是很多程序员对于基本知识的掌握有问题,从而导致的很多基本概念的混淆。本文就是从最基本的概念讲起,着重分析和比较指针和引用。主要从以下几个方面着重的讲解:1. 变量(variable)的表现形式;2. 指针的结构和原理;3. 引用的结构和原理;4. 指针在Array中的应用和注意事项;5. 指针不能dereference的几种情况;一:变量的形式说道变量,很多转载 2020-12-11 14:21:14 · 431 阅读 · 0 评论 -
Mac OS升级GCC版本
升级Mac中的GCC版本Mac 中自带的 GCC 版本是 4.2.1,由于版本太低,在很多操作的时候会报错。因此需要对其进行升级,这里使用 Homebrew 来下载最新的 GCC。安装 HomebrewmacOS的终端中输入如下的命令来安装Homebrew$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"安装完之后查看安装的版本$转载 2020-12-09 14:28:13 · 4211 阅读 · 2 评论 -
c++ Struct和Class的区别
C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。struct能包含成员函数吗? 能!struct能继承吗? 能!!struct能实现多态吗? 能!!! 既然这些它都能实现,那它和class还能有什么区别?最本质的一个区别就是默认的访问控制: 默认的继承访问权限struct是public的,class是private的。你...转载 2018-06-30 16:47:50 · 330 阅读 · 0 评论 -
使用TensorFlow C++ API构建线上预测服务 - 第一篇
使用TensorFlow C++ API构建线上预测服务 - 第一篇Oct 9, 2017|tensorflow文章目录1.使用Python接口训练模型 2.源码编译TensorFlow 3.使用TensorFlow C++ API编写预测代码 3.1.创建Session 3.2.导入模型 3.3.将模型设置到创建的Session里 3.4.设置模型...转载 2018-06-28 12:20:32 · 2413 阅读 · 5 评论 -
fatal error: nsync_cv.h: No such file or directory
从TF1.3升级到TF1.4之后,自己写的op也要重新编译TF_INC=$(python -c 'import tensorflow as tf; print(tf.sysconfig.get_include())')TF_LIB=$(python -c 'import tensorflow as tf; print(tf.sysconfig.get_lib())')i=$1o=${...转载 2018-06-14 18:03:36 · 698 阅读 · 0 评论 -
byte为什么要与上0xff?
无意间翻看之间的代码,发现了一段难以理解的代码。 byte[] bs = digest.digest(origin.getBytes(Charset.forName(charsetName))) ; for (int i = 0; i < bs.length; i++) { int c = bs[i] &...转载 2018-02-05 14:18:58 · 196 阅读 · 0 评论 -
Linux下C++访问MySQL数据库
由于想要开始了解并学习用LAMP进行web开发,所以昨晚我在Fedora上安装了MySQL,学习了MySQL的几个常用命令。想着在学习进行web开发(PHP访问数据库)之前,先用我熟悉的C++连接数据库试试。由于以前只接触过SQL Server,所以在网上查了很多资料,这里记录一下,以备后用。一,安装MySQL 当然在使用MySQL之前,首先需要安装。我的linux发行版是Fedo...转载 2017-11-10 11:26:59 · 349 阅读 · 0 评论 -
Linux core 文件介绍
1. core文件的简单介绍在一个程序崩溃时,它一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。2. 开启或关闭core文件的生成用以下命令来阻止系统生成core文件:ulimit -c 0下面的命令可以检查生成core文件的选项是否打开:ulimit -a该命令将显示所有的用户定制,其中选项-a代表“all”。也可...转载 2017-09-22 09:35:04 · 189 阅读 · 0 评论 -
分隔和截断字符串, boost string algorithm library中的split和trim
分隔和截断字符串, boost string algorithm library中的split和trimhttp://www.boost.org/doc/libs/1_46_1/doc/html/string_algo.html这个库是个 headers only library 这个库提供了STL没有提供的 string-related算法, 但是实现做到了可以用在任何 charac...转载 2017-09-15 13:59:14 · 305 阅读 · 0 评论 -
C++结构体的定义、初始化和引用
定义:结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。声明一个结构体类型的形式是:struct Student{ //声明一个结构体类型Student int num; //声明一个整形变量num char name[20]; //声明一个字符型数组name char sex; //声明一个字符型变量sex ...转载 2018-06-30 16:41:22 · 16249 阅读 · 0 评论 -
C++ string assign()赋值常用方法
C++ string assign()赋值常用方法函数assign()常用在给string类变量赋值. 常用方法有: 1,直接用另一个字符串赋值. 如str2.assign(str1);即用str1给str2赋值.2,用另一个字符串的一个子串赋值 如str3.assign(str1, 2, 3);3,用一个字符串的前一段子串赋值; 如str4.assign(“World”, 5);4,用几个相同的...转载 2018-06-19 10:41:06 · 6849 阅读 · 0 评论 -
内核锁 spin_lock 与 mutex_lock 区别? -- linux内核
为什么需要内核锁?多核处理器下,会存在多个进程处于内核态的情况,而在内核态下,进程是可以访问所有内核数据的,因此要对共享数据进行保护,即互斥处理有哪些内核锁机制?(1)原子操作atomic_t数据类型,atomic_inc(atomic_t *v)将v加1原子操作比普通操作效率要低,因此必要时才使用,且不能与普通操作混合使用如果是单核处理器,则原子操作与普通操作相同(2)自旋锁spinlock_t...转载 2018-06-15 18:43:02 · 1378 阅读 · 0 评论 -
C++ map注意事项
C++ map注意事项1、在map中,由key查找value时,首先要判断map中是否包含key。2、如果不检查,直接返回map[key],可能会出现意想不到的行为。如果map包含key,没有问题,如果map不包含key,使用下标有一个危险的副作用,会在map中插入一个key的元素,value取默认值,返回value。也就是说,map[key]不可能返回null。3、map提供了两转载 2017-10-18 19:39:11 · 272 阅读 · 0 评论 -
[C++]_[获取Utf8字符串的字符个数和子字符串]
场景:1.有时候需要统计utf8字符串的个数,单纯统计字节个数是不行的。2.有时候也需要获取从某个位置开始的n个连续字符用于显示或计算。[cpp] view plain copystatic int GetUtf8LetterNumber(const char *s) { int i = 0,转载 2017-11-10 22:57:48 · 609 阅读 · 0 评论 -
c++随机数
double gen_round(){ srand(time(0)); return rand()%100/(double)101;}转载 2017-11-13 11:10:10 · 367 阅读 · 0 评论 -
谈谈vector容器的三种遍历方法
vector容器是最简单的顺序容器,其使用方法类似于数组,实际上vector的底层实现就是采用动态数组。在编写程序的过程中,常常会变量容器中的元素,那么如何遍历这些元素呢?本文给出三种遍历方法。 方法一:采用下标遍历 由于vector容器就是对一个动态数组的包装,所以在vector容器的内部,重载了[]运算符,函数原型为:reference operato转载 2017-11-21 11:20:55 · 4664 阅读 · 0 评论 -
c++map按value排序--将map的pair对保存到vector中,然后写比较仿函数+sort完成排序过程。
map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value。假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行存储就是个不错的选择。 我们这样定义,map<string, int>,其中学生姓名用string类型,作为Key;该学生的成绩用int类型,作为value。这样一来,我们可以根据学生姓名...转载 2018-05-14 15:39:35 · 881 阅读 · 0 评论 -
编译程序加不加 -lpthread 的区别【转】
阅读目录 1. 对于动态链接的程序2. 对于静态链接的程序3. 符号版本的作用转自:http://www.cnblogs.com/Swartz/articles/3939382.html作者:Lokki 出处:http://www.cnblogs.com/Swartz/ 欢迎转载,也请保留这段声明。谢谢! 讨论贴 最近在优快云上看到一个帖子在讨论 进程间共享的Posix mutex的锁定状态能否...转载 2018-05-28 10:17:08 · 1206 阅读 · 0 评论 -
explicit构造函数
按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p ); // 用C风格的字符串p作为初始化值//…}String s1 = “hello”; //OK 隐式转换,等价于String s1 = String(“hello”); 但是有的时候可能会不需要这种隐式转...转载 2018-06-15 17:23:08 · 164 阅读 · 0 评论 -
linux多线程编程之线程安全mutex锁的使用
由于之前写的本来说多进程,但是由于需要共享资源(也就是共享一些变量),虽然进程通过其他方法可以实现共享资源,但是还是觉得用线程比较好!所以改成多线程了,但是一直没有用mutex,出现了不少段错误。我觉得势必和资源共享有许多关系!本来线程安全 的 资源共享 我觉得 用个变量来控制就行,比如int lock_x=0;在线程中if(lock_x==1) usleep(20);//休息20毫秒 、、这里我...转载 2018-06-15 17:40:07 · 295 阅读 · 0 评论 -
C++函数的三种传递方式为:值传递、指针传递和引用传递
C++函数的三种传递方式为:值传递、指针传递和引用传递值传递:void fun(int x){x += 5; //修改的只是y在栈中copy x,x只是y的一个副本,在内存中重新开辟的一块临时空间把y的值 送给了x;这样也增加了程序运行的时间,降低了程序的效率。}void main(void){int y = 0;fun(y);cout<<\"y = \"<...转载 2018-06-23 15:38:46 · 487 阅读 · 0 评论 -
Linux学习--gdb调试
一.gdb常用命令:命令描述backtrace(或bt)查看各级函数调用及参数finish连续运行到当前函数返回为止,然后停下来等待命令frame(或f) 帧编号选择栈帧info(或i) locals查看当前栈帧局部变量的值list(或l)转载 2017-09-22 13:58:00 · 205 阅读 · 0 评论