
C/C++
文章平均质量分 52
C/C++知识总结
ingy
这个作者很懒,什么都没留下…
展开
-
C++的static关键字
C++中static关键字的总结原创 2018-12-22 23:24:48 · 173 阅读 · 1 评论 -
[C++] 二维数组申请空间并释放
int n;//do somethinguchar **data = new uchar *[n];for (size_t i = 0; i < n; i++) { labels[i] = new uchar[w * h];}data[0] = d1;data[1] = d2;for (size_t i = 0; i < n; i++) { delete[] data[i];}delete[] data;原创 2021-09-16 19:32:00 · 436 阅读 · 0 评论 -
CMake生成lib和dll
set(LIBNAME test)add_library(${LIBNAME} SHARED "test.cpp" "test.h" )set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)target_link_libraries(${LIBNAME} PRIVATE Qt5::Core Qt5::Widgets Qt5::Quick)加参数SHARED,生成动态库dll,否则生成静态库lib。...原创 2021-08-27 09:54:51 · 3325 阅读 · 0 评论 -
C++11用到的新特性总结
1. final关键字1.1 禁止类被继承class A final {}; //禁止被继承class B : public A {}; //编译错误被声明成fianl的A不可以被B继承。1.2 禁止虚函数被重写class A { virtual void func() final {} //禁止被重写};class B : public A { virtual void func() {} //编译错误};被声明成final的虚函数(final不原创 2021-07-06 16:47:05 · 182 阅读 · 0 评论 -
const修饰指针总结
char str[] = "test";char *p = str; //非常量指针,指向非常量const char * p= str; //非常量指针,指向常量char * const p = str; //常量指针,指向非常量const char * const p = str; //常量指针,指向常量const出现在星号左边,表示被指物为常量,const出现在星号右边,表示指针本身为常量指针,总结成一句话:左定值,右定位...原创 2021-05-20 09:58:57 · 550 阅读 · 2 评论 -
拷贝构造和拷贝赋值
拷贝构造表示有新的对象被定义:Object obj1 = obj2; //新的Object对象obj1被定义,此时调用拷贝构造函数(copy construction)拷贝赋值表示没有新的对象被定义:obj1 = obj2; //obj1是一个已经被声明过的对象,此时调用的是拷贝赋值(copy assignment)...原创 2021-05-19 17:05:07 · 664 阅读 · 0 评论 -
C++读取文件夹下的所有文件
//获取文件夹下的所有文件的文件名,并存放到vector中std::vector<std::string> getfile(const std::string &path) { std::vector<std::string> vPath; intptr_t handle; struct _finddata_t fileinfo; handle = _findfirst(path.c_str(), &fileinfo); if (handle == -1.原创 2020-05-25 12:04:58 · 1329 阅读 · 0 评论 -
【C++】字符串查找、字符串截取、字符串替换
1. 截取子串s.substr(pos, n) //截取s中从pos开始(包括0)的n个字符的子串,并返回s.substr(pos) //截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回2. 替换子串s.replace(pos, n, s1) //用s1替换s中从pos开始(包括0)的n个字符的子串3. 查找子串s.find(s1) //查找s中第一次出现s1的位置,并返回(包括0)s.rfind(s1) ...原创 2020-05-23 22:36:21 · 706 阅读 · 0 评论 -
【C和指针】第一个例程
《C和指针》的第一个例子,从标准输入中读入输入文本,修改文本以后写到标准输出中。先读取一串成对出现的标号,表示输入的字符范围,以负数结尾表示结束。文本中在标号的范围内的内容被提取出来,然后写回到标准输出中。代码如下:#include <stdio.h>#include <stdlib.h>#include <string.h> #define MAX_COLS 20#define MAX_INPUT 1000 int read_column_nu.原创 2020-05-11 22:50:18 · 408 阅读 · 0 评论 -
C++11 emplace_back和push_back的区别
push_backvoidpush_back(constT&value); voidpush_back( T&value); (C++11 起) 后附给定元素value到容器尾。1)初始化新元素为value的副本。2)移动value进新元素。若新的size()大于capacity(),则所有迭代器和引用(包含尾后迭代器)都被非法化。否则仅尾后迭代器被非法化。参数value 要后附的元素值。为使用重载,...原创 2020-05-11 16:33:53 · 554 阅读 · 0 评论 -
explicit(显式)关键字
explicit 修饰构造函数时,可以防止隐式转换和复制初始化。 explicit 修饰转换函数时,可以防止隐式转换,但按语境转换除外。explicit 使用struct A{ A(int) { } operator bool() const { return true; }};struct B{ explicit B(int) {} expli...原创 2020-04-08 16:13:28 · 486 阅读 · 0 评论 -
联合(union)总结
联合(union)是一种节省空间的特殊的类,一个union可以有多个数据成员,但是在任意时刻只有一个数据成员可以有值。当某个成员被赋值后其他成员变为未定义状态。联合有如下特点: 默认访问控制符为 public 可以含有构造函数、析构函数 不能含有引用类型的成员 不能继承自其他类,不能作为基类 不能含有虚函数 匿名 union 在定义所在作用域可直接访问 union 成员 匿名...原创 2020-04-08 16:04:29 · 465 阅读 · 0 评论 -
位运算总结与应用
一、求下面函数的返回值int func(x){ int count = 0; while(x) { count++; x = x&(x-1); } return count;}功能:将x转化为2进制,看含有的1的个数。每执行一次x = x&(x-1),会将x用二进制表示时最右边的一...原创 2020-04-07 19:39:33 · 272 阅读 · 0 评论 -
字符串反转
字符串处理之字符串反转1.简单的按照反序输出字符串,并没有对字符串内容进行处理!//C风格#include<stdio.h>#include<string.h>#define MAX 100char a[MAX];int main() { int i; while(~scanf("%s",a)) { for(...原创 2019-02-19 17:31:30 · 494 阅读 · 0 评论 -
UTF-8字符过滤
编码的过程中,只针对UTF-8字符(!至~)进行处理,所以需要实现字符过滤功能筛选出非特殊字符。//只对非UTF-8字符进行编码static const char *hex = "0123456789abcdef";if(c > '!' && c <= '~') { ret.push_back(c);} ...原创 2018-12-04 23:54:14 · 822 阅读 · 0 评论 -
数组作为函数的参数
当一个数组名作为函数参数时,数组名的值就是指向数组第一个元素的指针,所以此时传递给函数的是一个地址。#include <iostream>#include <stdlib.h>#include <string.h>using namespace std;void func(char str[100]);int main(){ cha...原创 2018-12-20 11:00:00 · 1524 阅读 · 0 评论 -
string用法总结
目录1. 构建操作2.赋值操作3.取值操作4.拼接操作5.查找操作6.替换操作7.比较操作8.子串操作9.插入删除操作1. 构建操作void Test1(){ cout << endl << "构造操作: " << endl; string s1; //默认构造 string s2(1...原创 2018-09-17 15:41:34 · 192 阅读 · 0 评论 -
引用的几个问题
引用和指针最明显的区别是声明的时候,指针可以不初始化,而引用必须在声明时就初始化,并且与某个变量关联以后,将一直为那个变量“效忠”,它就像是一种const型的指针(指向的地址永远不变)。引用和指针的联系与区别相同点是两者在函数中都有地址的意义。区别:1. 指针是一个变量实体,而引用是个别名;2. 引用使用时无需解引用(*),指针需要解引用;3. 引用只能在定义时被初始化一次,之...原创 2018-09-16 23:38:17 · 415 阅读 · 0 评论 -
[C++]存储连续性、作用域和链接属性总结
2018.12.20 修改:存储连续性和存储区的联系2018.12.21 添加:静态变量和全局变量的区别2018.12.21 添加:静态概念的总结2018.12.22 添加:函数的连续性存储连续性C++提供四种数据存储连续性,用以规定变量的生存周期。1.自动存储连续性:在函数中声明定义的变量(包括形参),在函数调用时初始化,在函数返回时销毁。2.静态存储连续性:在程序的...原创 2018-12-20 17:13:12 · 963 阅读 · 1 评论 -
【C++】 typedef总结
C和C++的用法区别在C中定义一个结构体类型要用typedef:typedef struct Student { int a;} Stu;于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1来声明),这里的Stu实际上就是struct Student的别名(Stu==struct Student)。另外这里也可...原创 2018-09-17 21:16:44 · 173 阅读 · 0 评论 -
静态库和动态库的编译和使用
我们把公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被链接到目标代码中,而是在程序运行时才和可执行程序一起被载入内存,因此在可执行程序运行时还需要动态库同时存在。本文主要通过举例来说明在Linux中如何创建静态库和动态库,以及使用它们。简单实例,两个模块:add和sub。...原创 2018-09-26 19:46:28 · 1752 阅读 · 0 评论 -
【C++】三种继承方式
三种访问权限public: 公有成员,是类对外提供的可访问接口,在类内和类外都可以访问;private: 私有成员,仅在类内可以被访问,对类外隐藏;protected: 保护成员,同样对类外隐藏,但是在派生类中可以被访问。三种继承方式对一个类的派生类来说,在继承基类的过程中,不仅包含了基类的所有成员,还增加了自己的成员,而派生类中成员的访问权限则会因为继承权限方式的不同而不同。...原创 2018-09-15 18:49:26 · 1630 阅读 · 0 评论 -
[C++] 虚函数、抽象类和多态
2019.3.7 修改C++对象模型机制错误虚函数被virtual关键字修饰的函数,称为虚函数,它的应用有以下限制:类对象有虚函数表,存放所有的虚函数地址静态函数不能是虚函数,因为静态函数不属于任何一个class object内联函数不能是虚函数构造函数不能是虚函数纯虚函数纯虚函数是虚函数的一种特例,其格式是:virtual func() = 0;...原创 2019-03-05 13:24:57 · 461 阅读 · 0 评论 -
C++的数组和指针
C++的指针和数组的一些总结原创 2018-09-13 11:44:24 · 3902 阅读 · 2 评论 -
[STL] 2_类模板
目录1.类模板实例化2. 模板类的头文件和源文件分离 3. 类模板的友元函数4. 类模板继承5. 类模板的静态成员6.用模板实现的字符串管理类1.类模板实例化模板类不存在于程序中,程序中存在的是有具体的数据类型的实例化的类,下面是最简单的模板类实例化测试的例子。#include <iostream>using namespace std;te...原创 2018-09-12 23:19:46 · 193 阅读 · 0 评论 -
[STL] 1_函数模板
目录1.函数模板实例化2.函数模板具体化3.和普通函数并存4. 一种需要注意的使用错误模板的设计目的是类型参数化,编写类型可忽略代码,为了让编译器区分模板函数还是普通函数,需要template关键字template <class T> //template <typename T>void swap(T &a, T &b) {...原创 2018-09-09 20:26:30 · 184 阅读 · 0 评论 -
系统框架
首先时leveldb的外部接口 Code:include/leveldb/db.hclass DB {public: static Status Open(const Options& options, const std::string& name, DB** dbptr); virtual Status Put(const WriteOptions...原创 2018-08-17 12:58:23 · 1236 阅读 · 0 评论