c++
IT8343
这个作者很懒,什么都没留下…
展开
-
C++有关栈的使用
栈空间是先进后出,有较大用处,例如反着打印链表的值,可以顺序遍历,然后推入栈,再推出。用例如下:#include "../common.h"#include<stack>int main(){ std::stack<int>data; data.push(1); data.push(2); data.push(3); while(!data.empty()) { printf("data:%d size原创 2021-03-03 09:41:56 · 155 阅读 · 0 评论 -
jsoncpp解决序列化顺序按字母排序问题
使用场景:需要修改json中key的值,如果使用jsoncpp读取——序列化——修改值——存储,这样的话存的json文件的关键字的顺序就和源文件不是一致的,默认会按照字母进行排序。使用jsoncpp没有找到合适的方式进行解决,只能借助python进行解决。我们可以在c++中调用python的函数进行这个操作:...原创 2021-01-20 21:05:07 · 4217 阅读 · 2 评论 -
角度限制(0~360)
#include"../common.h"#include <math.h>int main(){ double azimuth = 13192148992.0 * 4 + 320.0; int x = 360; azimuth = azimuth - floor(azimuth/x)*x; printf("azimuth = %f\n",azimuth); float azimuth2 = 13192148992.0 * 4 + 320.0;.原创 2021-01-11 14:27:08 · 2033 阅读 · 0 评论 -
C++11 enum class
/*整形提升的关键:* 1.一个char类型、short类型、位域(不论是有符号还是无符号)或是一个枚举体,都可以在int或是unsigned int可以使用的表达式中使用。* 2. 换句话就是上述的类型可以替换表达式中的int或是unsigned int*/#include "../common.h"int add(int addA,int addB){ return addA + addB;}/*无法限定作用域,可能会导致冲突*/enum Test{ e_a.原创 2020-12-09 16:37:45 · 295 阅读 · 0 评论 -
vector 内存管理(释放多余的内存、空闲的内存)
//capacity:容器占用的内存(容器类型个数)#include "../common.h"int main(){ vector<int> v; printf("没有元素 ****** size:%d\n",v.capacity()); v.push_back(1); printf("添加第1个元素(1) **** size:%d\n",v.capacity()); v.push_back(2); printf("添加第2个元素(2) **** size:%.原创 2020-10-14 17:25:14 · 977 阅读 · 0 评论 -
Linux 文件锁范例,获取配置文件值,得到文件大小、路径,检测文件是否存在、监视文件改变等
当多个进程对一个文件进行操作时,常常需要添加保护,这时就需要用到文件锁。范例内容:一个进程对.tfreq.ini进行写操作,当这个进程在写的过程中,不允许其它进程对文件进行操作,当它结束写之后,另一个线程再读取其中的内容。锁的类lock.h:class file_locker{public: bool file_lock(int file_fd) //加锁 { struct flock my_lock; my_lock.l_type =原创 2020-09-01 15:50:42 · 387 阅读 · 0 评论 -
C++异常处理
C++异常处理涉及到三个关键字:try、catch、throw。 throw:用于抛出异常 catch:用于捕捉异常 try:块中的代码标识将被激活的特定异常。它后面通常跟着一个或多个 catch 块。如果有一个块抛出一个异常,捕获异常的方法会使用try和catch关键字。try 块中放置可能抛出异常的代码,try 块中的代码被称为保护代码。执行一个throw时,throw之后的语句将不再被执行(类似于return),程序会跳到与之匹配的ca...原创 2020-08-15 10:47:05 · 632 阅读 · 0 评论 -
C++模板
模板定义:模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数, 从而实现了真正的代码可重用性。模版可以分为两类,一个是函数模版,另外一个是类模版。函数模板如下面的例子:int func_max(int a, int b){ return a>b?a:b;} 求两个整数的最大值,func_max()的参数为int类型,如果我们需要求两个float型数的最大值,必须定义一个几乎一模一样的函数,这样就很容易造成代码的冗杂和重复。...原创 2020-07-31 23:42:05 · 258 阅读 · 1 评论 -
线程只被创建调用一次
#include<stdio.h>#include"common.h"pthread_once_t once=PTHREAD_ONCE_INIT;pthread_once_t once2=PTHREAD_ONCE_INIT;void fun2_run(){ while(1){ printf("I am fun 2...\n");sleep(1); }}...原创 2018-11-16 10:13:51 · 840 阅读 · 0 评论 -
回调函数范例以及讲解
回调函数: 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。 回调函数使用范例:#include "../common.h"typedef int (*callBackFun) (char *p); //定义一个函数指针类型 callBackFun...原创 2020-06-29 19:56:24 · 476 阅读 · 2 评论 -
题目
int main(){ printf("input n="); int n = 0; int An = 0; scanf("%d",&n);getchar(); if(n==1 || n==2) { An = n; } else { if(n%2==0) { An = 3*((n-2)/2) + 1; } else .原创 2020-06-01 18:32:11 · 282 阅读 · 0 评论 -
linux下宏定义带参,获取代码所在行以及文件和函数
#include "../common.h"#define my_printf_a(level,__format__,...) \ my_printf(level,__format__"<%s %d %s>", ##__VA_ARGS__,__FILE__,__LINE__, __FUNCTION__);int my_printf(int level,const c...原创 2020-04-07 16:24:16 · 573 阅读 · 0 评论 -
linux下读写锁与queue队列使用范例
#include "common.h"#include <queue>#define _COR_DATA_LEN 2048typedef struct{ char data_buf[_COR_DATA_LEN];}s_cor;queue <s_cor> myq;pthread_rwlock_t rwlock;void *recv_func(vo...原创 2020-03-18 08:55:49 · 564 阅读 · 0 评论 -
C++二维容器vector的使用
using namespace std;typedef struct{ int a; int b;}s_test;int main(){ vector<vector<s_test>> v_test; vector<s_test> v_test1; vector<s_test> v_test2; v_test.push_b...原创 2020-02-20 00:30:38 · 814 阅读 · 0 评论 -
深拷贝构造、浅拷贝构造
浅拷贝构造是创建一个对象B,并使B与A指向同一地址。深拷贝构造是创建一个对象B,使B与A所指向的地址里面的东西一模一样。具体含义不再表诉。#include<iostream>using namespace std;class Stu{ public: Stu() { p=new int(1000); ...原创 2018-05-27 16:54:43 · 532 阅读 · 0 评论 -
c++中的友元函数1.0
友元函数也是通过对象来访问类中的成员:#include<iostream>using namespace std;class Love{ public:// void show2() //--------------------------------通过调用show2可以输出// {// int b=10;// ...原创 2018-05-27 21:00:56 · 216 阅读 · 0 评论 -
运算符重载 “+”
一个简单的运算符重载:+用于计算钱的加减(简单不严谨):#include<iostream>using namespace std;class money{ public: money(int y,int j) { yuan=y;jiao=j;} friend money operator+(money m1,...原创 2018-05-28 19:36:52 · 1574 阅读 · 0 评论 -
多态->虚函数
#include<iostream>using namespace std;class Father{ public: Father() { cout<<"father"<<endl; } Father(int) { co...原创 2018-05-29 15:09:29 · 134 阅读 · 0 评论 -
带参数的继承类构造方法1.0
#include<iostream>using namespace std;class Father{ public: Father(string n) { name=n; cout<<"构造Father"<<endl;} ~Father() {c...原创 2018-05-29 21:30:40 · 857 阅读 · 1 评论 -
容器和迭代器
#include<iostream>#include<vector>using namespace std;class stu{ private: string name; int id; public: stu(string n,int i):name(n),id(i){} void ...原创 2018-05-30 21:15:17 · 182 阅读 · 0 评论 -
map容器
代码:#include<iostream>#include<map>using namespace std;int main(){ map<string,int>m;//-----------map<key,T> m["aaa"]=111; m["bbb"]=222; m["ccc"]=3原创 2018-05-31 15:15:40 · 197 阅读 · 0 评论 -
>运算符重载
#include<iostream>using namespace std;class stu{ private: int id; string name; public: friend stu operator>(stu ,stu); void set() { ...原创 2018-05-31 17:26:09 · 265 阅读 · 0 评论 -
cout运算符重载
cout格式比较固定,要记住怎么用:#include<iostream>using namespace std;class stu{ private: int id; string name; public: friend ostream& operator<<(ostream &out,...原创 2018-05-31 17:41:09 · 3256 阅读 · 0 评论 -
利用c++做二维码
输入dpkg -i命令,先解压安装libqrencode.....,然后再qrencode......tar.gz,最后是......dev;代码:#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;int main(){ int...原创 2018-06-18 18:38:56 · 3236 阅读 · 1 评论