C++
永不过时的语言
楼兰公子
这个作者很懒,什么都没留下…
展开
-
[算法竞赛题]cow浮点数二分
#include<iostream>#include<bits/stdc++.h>using namespace std;const int N=2e5;int a[N];double sum[N];int n,f;int check(double mid){ for(int i=1;i<=n;i++){ sum[i] = sum[i-1]+a[i]-mid; } double midx = N; for(in.原创 2021-08-07 21:25:41 · 81 阅读 · 0 评论 -
[C++]生产者消费者模型
#ifndef STDCONDITION_HPP#define STDCONDITION_HPP#include <queue>#include <chrono>#include <mutex>#include <thread>#include <iostream>#include <condition_variable>int test_condition() { std::queue<int> ...原创 2021-01-05 12:35:45 · 109 阅读 · 0 评论 -
[jsoncpp] jsoncpp空对象添加以及两种不同格式的转换
#include "json/json.h"#include <iostream>/** \brief Write a Value object to a string. * Example Usage: * $g++ stringWrite.cpp -ljsoncpp -std=c++11 -o stringWrite * $./stringWrite * { * "action" : "run", * "data" : * { * .原创 2020-06-11 19:25:07 · 1081 阅读 · 0 评论 -
判断应用所运行的CPU类型
#ifdef _ARM_#elif _X64_#endif原创 2020-11-03 12:28:26 · 213 阅读 · 0 评论 -
文本字符集格式转换命令行
sudo iconv -f 'gbk' -t 'utf-8' test.txt > test_utf8.txt原创 2020-11-05 16:48:54 · 159 阅读 · 0 评论 -
Qt support sql driver ubuntu 1804
#include "mainwindow.h"#include <QApplication>#include<QSqlDatabase>#include<QDebug>#include<QStringList>int main(int argc, char *argv[]){ QApplication a(argc, argv); //MainWindow w; //w.show(); qDebug()<&.原创 2020-10-10 10:24:08 · 130 阅读 · 0 评论 -
core dump 调试开关打开之C代码
/* ============================================================================ Name : switch_core.c Author : Version : Copyright : Your copyright notice Description : Hello World in C, Ansi-style ================================.原创 2020-07-28 19:50:03 · 1075 阅读 · 0 评论 -
PIMPL的使用理由
private Implementation 1.降低模块耦合度 2.降低编译依赖,提高编译速度 3.接口与实现分离,提高接口稳定性 原理:在公共接口里封装私有数据和方法,将类的实现细节放在分离的指针访问类中。 用途:这种方法用于构造稳定的ABI的C++库接口,减少编译依赖 现代C++不鼓励 owning raw pointers ,可以使用智能指针实现PIMPL...原创 2020-07-08 15:51:05 · 180 阅读 · 0 评论 -
if else过多的解决办法
如何解决代码中if…else 过多的问题前言if...else 是所有高级编程语言都有的必备功能。但现实中的代码往往存在着过多的 if...else。虽然 if...else 是必须的,但滥用 if...else 会对代码的可读性、可维护性造成很大伤害,进而危害到整个软件系统。现在软件开发领域出现了很多新技术、新概念,但 if...else 这种基本的程序形式并没有发生太大变化。使用好 if...else 不仅对于现在,而且对于将来,都是十分有意义的。今天我们就来看看如何“干掉”代码中的 if...转载 2020-06-09 10:02:48 · 507 阅读 · 0 评论 -
单个puts语句和多个puts语句的时间效率差异测试
clock_t start = clock(); for(auto i=0;i<1000000;i++){ puts("Reading from keyboard"); puts("---------------------------------------"); puts("Use arrow keys to move the robot."); puts("otherwise the key values will be..原创 2020-05-26 10:55:59 · 224 阅读 · 0 评论 -
数字转字符串的转换
#include <ctype.h>#include <stdio.h>void itoa (int n,char s[]){ int i,j,sign; if((sign=n)<0)//记录符号 n=-n;//使n成为正数 i=0; do{ s[i++]=n%10+'0';//取下一个数字 } while ((n/=10)>0);//删除该数字 if(sign<0) .原创 2020-05-26 10:51:40 · 177 阅读 · 0 评论 -
三元运算符存在的隐式转换现象
#include<stdio.h>int main(){ int x = 4; printf("%d\n",x>4?99.0:9); printf("%d\n",x>4?99:9); printf("%d\n",x>4?99:9.0); printf("%f\n",x>4?99:9.0); if(x>4){ printf("%d\n",99.0); }else{ printf("%f\n",9); .原创 2020-05-09 10:08:05 · 565 阅读 · 0 评论 -
字符转换
std::wstring AsciiToUnicode(const std::string& str){ // 预算-缓冲区中宽字节的长度 int unicodeLen = MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, nullptr, 0); // 给指向缓冲区的指针变量分配内存 wchar...转载 2020-04-15 11:42:00 · 90 阅读 · 0 评论 -
C和C++重要区别
C和C++可以自然混合,C++是作为C的扩展设计的 C和C++数据类型基本相同, C和C++唯一区别是体现在函数名称上,C语言使用简单函数名,不考虑参数的个数和类型,C++总是将参数类型列表当做函数名的一部分, C++提供一些特殊的功能可以声明C函数,即C++程序可以直接声明并调用C函数...原创 2020-04-14 21:06:38 · 156 阅读 · 0 评论 -
C++中文件打开操作错误
#define ATRIS_CONFIG_SET_BEGIN \ std::ifstream _in_(ATRIS_CONFIG_PATH, std::ios::binary); \ if (!_in_.is_open()) { \ log_error("%s Open file failed: %s", __FUNCTION__, ATRIS_CONFIG_PATH); \...原创 2020-04-14 19:41:38 · 389 阅读 · 1 评论 -
如何查询系统默认配置目录
By default, the preprocessor looks for header files included by the quote form of the directive #include"file" first relative to the directory of the current file, and then in a preconfigured list of...原创 2020-04-01 10:20:03 · 148 阅读 · 0 评论 -
字符串分割最全集锦
C++ 字符串分割1.#include <vector>#include <string>#include <iostream>using namespace std;vector<string> split(const string &s, const string &seperator){ vector<s...转载 2020-03-27 10:40:42 · 592 阅读 · 1 评论 -
r: ambiguous overload for ‘operator[]’ in ‘value.Json::Value::operator[](((const char*)"command_
Json:Value下标既可以是int类型可以使string类型,std::size_t的类型是不明确的,所以不能使用std::size_t ,应该使用int 或者 unsigned int原创 2020-03-20 10:20:35 · 564 阅读 · 0 评论 -
C++性能优化指南
概述 影响优化的计算机行为 测量性能 优化字符串的使用 优化算法 优化动态分配内存的变量 优化热点语句 使用更好的库 优化查找和排序 优化数据结构 优化IO 优化并发 优化内存管理...原创 2020-02-21 14:54:54 · 145 阅读 · 0 评论 -
大小端
数据以何种方式在存储器中被存储和引用单芯片不仅包含小端的OS环境,界面(例如USB,PCI)大端的数据(TCP/IP包,MPEG流)ARM v6体系结构支持二者混合ARM V6体系结构支持未对齐数据未对齐数据是值数据未与自然边界对其...原创 2020-02-17 19:36:50 · 84 阅读 · 0 评论 -
优化之循环展开
代码如下:#include<stdio.h>#include<stdlib.h>#include<sys/time.h>void printtime(struct timeval a1,struct timeval a2){ long time = 1000000*(a2.tv_sec-a1.tv_sec)+a2.tv_usec-a1.tv_us...原创 2020-02-16 15:17:09 · 219 阅读 · 0 评论 -
decltype的用法
一,decltype使用的是不加括号的变量,则得到的结果就是该变量的类型int a = 3,b = 4;decltype(a) c = a; int 类型decltype((b)) d = a; 引用类型 等价于 int &d = a;二.decltype如果给变量加了一层或多层括号,编译器就会把它当成表达式,从而推断得到引用类型,但是不实际计算表达式例如 d...原创 2020-01-14 09:25:56 · 2598 阅读 · 0 评论 -
底层const和顶层const的区分
1.辨别规则利用右结合原则右结合的是类型或者*则是底层const,右结合的是标识符则是顶层const2特性底层const指的是与指针,引用有关联的顶层const表示任意对象是常量3.在指针中既有顶层const也有底层const在引用中只有底层const4.底层const修饰的是常量指针又叫常指针 顶层const修饰的是指针常量,只能用对象...原创 2020-01-13 15:36:50 · 234 阅读 · 0 评论 -
C&&C++中NULL的定义
C语言中的定义方式typedef NULL (void*)0;C++中的定义方式#ifndef NULL#ifdef __cplusplus#define NULL 0#else#define ((void*)))#endif原创 2020-01-12 16:39:16 · 277 阅读 · 0 评论 -
C++多态
静态多态 函数重载 泛型函数动态多态虚函数原创 2020-01-12 00:25:12 · 121 阅读 · 0 评论 -
策略模式实现样例
/*定义一系列算法,并一个个封装,使之可以互相替换.是的算法独立于客户,或者说算法完成的功能是一样的.对外接口移植.只是各自实现上存在差异主要解决:多种算法相似情况下使用if.else所带来的复杂和难以维护使用时机:一个系统多个类,差异点只在于他们的直接行为解决:将来算法封装成类可以任意替换关键代码:实现同一个接口缺点:1.策略类会增多,2.所有策略都需要对外暴露*/#ifnd...转载 2020-01-07 17:59:22 · 148 阅读 · 0 评论 -
装饰模式实现样例
/*装饰模式:动态地给对象添加额外的功能,就新功能来说,装饰器模式比生产子类更加灵活. * 主要解决:通常我们为了扩展一个类经常使用继承的方式,由于集成为类引入静态特征,并且随着扩展功能的增多,子类会膨胀. * 如何解决:将具体的功能划分,同时继承装饰者类 * 关键代码:装饰类复合和继承组件类,具体的扩展类重写父类的方法*/#ifndef MODE_DECORATE_HPP#def...转载 2020-01-07 17:53:51 · 147 阅读 · 0 评论 -
建造者模式实现样例
/*建造者模式: 将复杂对象的构建和其表示分离,使得同样的构建过程可以创建不同的表示. * 主要解决: 一个复杂对象的创建工作,由各个部分的子对象用一定的算法构成,由于需要变化,这个复杂对象的各个部分经常面临变化,但它们组合在一起的算法相对稳定 * 如何解决:变与不变分开 * 关键代码:建造者:创建和提供实例,Director:管理建造出来的实例的依赖关系.. * 缺点:1.产品必须有共...原创 2020-01-07 17:52:11 · 86 阅读 · 0 评论 -
抽象工厂实现样例
/*提供一个创建西一列相关或相互依赖的对象接口,而无需指定他们的具体类.主要解决:接口选择问题使用时机:系统的产品有多于一个的产品族,而系统只消费其中某一族的产品如何解决:一个产品族里定义多个产品关键代码:在一个工厂里聚合多个同类产品.缺点:产品族扩展困难,要增加一个系列的某一个产品,既要在抽象的Creator里面加代码,又要在具体的对象李添加代码*/#ifndef MODE_...原创 2020-01-07 17:50:01 · 94 阅读 · 0 评论 -
适配模式的实现样例
/**将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作*主要解决:在软件中,厂存在一些"现存的现象"放到新的环境中,而新环境要求的接口是现对象不能满足的*使用时机:1.系统需要使用现有的类,二此类的接口不符合系统需要 2.想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,...原创 2020-01-07 17:49:03 · 108 阅读 · 0 评论 -
观察者模式的实现样例
/*观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变,所有依赖于它的对象都得到通知并自动更新 * 主要解决:一个对象更新,其他对象也要更新 * 如何解决:目标类通知函数通知所有观察者自动更新 * 关键代码:在目标类中增加一个ArrayList来存放观察者们*/#ifndef MODE_OBSERVER_HPP#define MODE_OBSERVER_HPP...原创 2020-01-07 17:47:34 · 145 阅读 · 0 评论 -
C++类类名宏定义打印 仅在gcc编译器
#include "class_macro_test.h"#include<iostream>using namespace std;class_macro_test::class_macro_test(){}void class_macro_test::test(){ cout<<__PRETTY_FUNCTION__<<endl;...原创 2020-01-07 10:15:58 · 1326 阅读 · 0 评论 -
组合设计模式中出现的疑问
Class FinanceDept has a constructer with 1 argument that is not explicitPrefer prefix ++/-- operators for non-primitive types原创 2020-01-06 17:12:34 · 515 阅读 · 0 评论 -
代码风格关键点
1.使用4个TAB空头2.注释采用/*---*/,并且代码放在函数头部,解释结果是什么,不要说明做了什么3.文件信息注释 版权,文件名,作者,版本号,文件简介,修改日志4.函数作用,参数含义,返回值含义/**@Description:*@param --1*@param --2*@return -- 返回值*/命名规则1.清晰2.完...原创 2019-12-26 10:44:08 · 159 阅读 · 0 评论