C/C++知识点
文章平均质量分 52
kuweicai
这个作者很懒,什么都没留下…
展开
-
C/C++ 中的位运算及其典型应用
C/C++ 中的位运算及其典型应用C/C++ 中提供了6种位运算,对于每一种都很好理解。位运算比较简单,但是如果能灵活应用往往能取得预想不到的效果。这里将不会一一介绍其定义,这里的重点是介绍一些比较经典的应用。如果对其定义还不是很熟悉的朋友可以参考位运算。需要注意的是负数按补码形式参加位运算。操作符标记&按位与|按位或~取反^按位异或<<左移>>右移1. 按位与1.1 判断奇偶 int x =原创 2021-06-02 23:21:52 · 1267 阅读 · 0 评论 -
Linux C++(QT) 下获取 CPU 序列号(processor serial number)
Linux C++(QT) 下获取 CPU 序列号(processor serial number)亲测(Intel core-i)可用。#include <cpuid.h>#include <sstream>std::string GetCPUId(){ std::string strCPUId; unsigned int level = 1; unsigned eax = 3 /* processor serial number */, eb原创 2021-01-08 12:06:44 · 4124 阅读 · 0 评论 -
C++ 中 map 容器的内存释放机制及内存碎片管理
C++ 中 map 容器的内存释放机制及内存碎片管理C++ 中的容器很好用,比如 vector, map 等,可以动态扩容,自己管理内存,不用用户关心,但是在某些极端情况下,如果内存比较紧张的情况下,可能用户对于这些容器自己的管理规则(主要是释放规则)就不太满意了。1. erase, clean通常在使用 map 的时候直接通过 erase,或者 clean 方法就可以删除数据,如果结合智能指针,用户不用关心内存的问题。但是需要注意的是,调用 erase 或者 clean 方法后,内存并没有立马释放,原创 2021-01-08 11:59:36 · 13638 阅读 · 4 评论 -
C++ 调用 Python 脚本,并把 cv::Mat 类型传参到 Python 端
C++ 调用 Python 脚本,并把 cv::Mat 类型传参到 Python 端前言查看了很多参考,最后找到一个完整的示例并且跑通,在开始这个任务之前,首先应该确保你的环境是没有问题的,比如:C++ 和 Python 直接可以传递简单类型的参数C++ 端独立通过 opencv 加载图像是没有问题的Python 端 import 独立加载图像是没有问题的具备上面这些条件后,可以参考下面的代码,将 cv::Mat 类型的参数传递到 Python 端。代码这部分主要参考 sending M原创 2020-10-30 14:26:36 · 3889 阅读 · 5 评论 -
C++ 多线程基础及 C++11 多线程库总结
1. 多线程基础1.1 进程与线程根本区别:进程是操作系统资源分配的基本单位,线程是任务调度和执行的基本单位开销方面:每个进程都有自己独立的代码和数据空间,程序之间的切换开销较大。线程可以看作是轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器,线程之间切换开销小。所处环境:一个操作系统能同时运行多个进程(程序)。在一个进程中,可以有多个线程同时执行。内存分配方面:系统在运行的时候会为每个进程分配不同的内存空间。对线程而言,系统不会为原创 2020-10-22 22:56:15 · 3608 阅读 · 0 评论 -
C++11 中的 Smart Pointer(shared_ptr/weak_ptr/unique_ptr) 总结
Smart PointerC++ 111. shared_ptrShared Ownershipsource code1.1 constructshared_ptr<int> p = make_shared<int>(88);shared_ptr<int> p1(new int(88));auto p2 = make_shared<int>(88);auto p3(p2);1.2 why make_shared is原创 2020-10-22 21:31:25 · 1927 阅读 · 0 评论 -
C++11 中 vector 的基本操作及使用注意事项
STL_vector1. 基本操作1.1 初始化std::vector<int> a (5); //0,0,0,0,0std::vector<int> b (5,1); //1,1,1,1,1std::vector<int> c = {1,2,3,4,5,6};1.2 赋值std::vector<int> foo (3,0);std::vector<int> bar (5,0);bar = foo; //Copies all原创 2020-10-22 21:21:21 · 7145 阅读 · 4 评论 -
C++ 中的二阶构造模式详解
C++ 中的二阶构造模式1. 半成品对象构造函数能决定的只是对象的初始状态,而不是对象的诞生,所以如果构造函数没有按照预期执行完毕,但是对象依然会被构造。比如在对象的构造过程中由于某些原因(比如对写文件,申请内存等)导致构造函数没有按照预期执行完毕,但是对象依然被构造了,这样的对象叫作半成品对象。半成品对象是合法的 C++ 对象,也是 Bug 的重要来源,因为难以 debug。下面是一个半成品对象的示例。#include <iostream>class Test{privat原创 2020-10-15 23:11:43 · 1265 阅读 · 0 评论 -
C++单例模式实例——如何管理内存及线程安全(代码)
C++单例模式实例——如何管理内存(代码)前言单例模式是设计模式中比较简单的一种模式,也是实际使用中比较常用的一种。比如可以用单例模式来管理一些全局信息。对于单例模式中的内存管理,大致有三种做法:直接交由系统,程序退出时自动释放内存手动 delete自动 delete其中第三种做法比较巧妙。代码下面的代码给出了第二种和第三种方法的实现。sp.hpp#include<i...原创 2020-01-16 22:36:23 · 623 阅读 · 0 评论 -
C++ Traits运用实例
问题描述需要把数据类型分为三类,比如float,double是一类,int, char是一类,其他的包括自定义类型是一类。解决方法// template_test.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <string>#include <iomanip...原创 2019-06-23 00:01:57 · 1924 阅读 · 0 评论 -
C/C++常见面试知识点总结附面试真题----20220326更新
以下内容部分整理自网络,部分为自己面试的真题。第一部分:计算机基础1. C/C++内存有哪几种类型?C中,内存分为5个区:堆(malloc)、栈(如局部变量、函数参数)、程序代码区(存放二进制代码)、全局/静态存储区(全局变量、static变量)和常量存储区(常量)。此外,C++中有自由存储区(new)一说。2. 堆和栈的区别?1).堆存放动态分配的对象——即那些在程序运行时分配的对象......原创 2018-09-19 22:47:57 · 147992 阅读 · 27 评论 -
C/C++笔试题总结——持续更新中
1. 实现String类已知类String的原型为:class String{ public: String(const char *str = NULL); //普通构造函数 String(const String &); //拷贝构造函数 ~String(void); ...原创 2018-08-22 22:39:31 · 1802 阅读 · 0 评论 -
C语言输入输出函数归纳总结(printf/fprintf/sprintf/putchar/putch/putc/puts/fputs......)
收集整理了C语言中的输入输出函数:printf/fprintf/sprintf/putchar/putch/putc/puts/fputs...并进行了对比分析,归纳总结。原创 2016-05-08 15:19:41 · 1608 阅读 · 0 评论 -
C语言中的Bool类型
在C99之前,C语言中没有定义Bool类型,但是在C99标准中将该类型添加了进来。首先来看看,C99中定义的Bool类型如何使用。1. 基于C99标准,如何定义一个Bool类型?有两种方式:A._Bool man;(需要注意的是,虽然bool类型了,但是true和flase却没有定义,所以推荐用B方式)B.#includebool man; 2. 有时考虑到兼容原创 2016-04-12 22:51:50 · 1199 阅读 · 0 评论 -
Codeblock安装提示:Can't find compiler executable 无法找到编译器
codeblock安装后,提示cant find compiler executable in your configured search paths for GNU GCC Compiler可能的情况有两个:1)安装的是不带编译器的版本2)安装了带编译器的版本,但是没有指定正确的路径。解决办法:对于第一种情况,直接在官网下载带有编译器的版本;对于第二种情况,需要手动的指原创 2016-05-17 22:09:04 · 39282 阅读 · 11 评论 -
C++中的函数重载中为什么不考虑返回值类型?
1. 问题描述函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。那为什么不可以是函数名相同,参数列表相同,函数的返回值不同呢?2. 从一个函数重载实例说起 看下面的一个例子,来体会一下:实现一个打印函数,既可以打印int型、也可以打印字符串型。在C++中,我们可以这样做:#includeus转载 2017-03-31 18:12:09 · 15348 阅读 · 4 评论 -
C++中引用(&)的用法和应用实例
对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率和增强代码质量的一个很好的办法。在 c++学习提高篇(3)---隐式指针的文章中我详细介绍了在隐式指针&的用法,其实这两个概念是统一的。引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、转载 2017-05-13 15:49:49 · 244 阅读 · 0 评论 -
C++中的inline关键字用法介绍
一、inline 关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。 表达式形式的宏定义一例: #define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2))为什么要取代这种形式呢,且听我道来: 1. 首先谈一下在C中使用这种形式宏定义的原因,C语言是一个效率很转载 2017-06-04 16:26:43 · 2198 阅读 · 0 评论 -
VS编译——C/C++遍历库目录得到附加依赖项列表
Update:如果是为了练习C/C++编程,这种方法也不是不可以,但是如果你只是为了得到list,那就大可不必如此了。直接用batch或则python,都可以很方便的实现。以batch为例,在包含lib文件的文件夹里,新建一个txt,输入以下内容,然后保存文件,将文件后缀改为.bat,例如test.bat,点击这个文件运行,就是生成一个1.txt的文件,里面就会list所有的.lib的名字。...原创 2017-12-12 19:13:23 · 924 阅读 · 1 评论 -
为什么Windows 系统中用反斜杠表示路径,而C语言教材中都是用斜杠表示头文件的路径?
例如在《C Primer Plus》一书中,写到包含头文件时,可以直接指定头文件的路径,如 #include “/usr/biff/p.h”。 这个和我们平时在Windows系统中习惯不同,例如我们电脑桌面的路径 C:\Users\Administrator\Desktop。 那到底是为什么会采用不同的表示方式了? UNIX 操作系统设原创 2016-04-04 22:27:55 · 5660 阅读 · 0 评论