include

[POJ3468]A Simple Problem with Integers

試著忘記壹切 提交于 2020-03-08 03:04:21
题目链接:http://poj.org/problem?id=3468 线段树区间更新查询的样题,注意数据范围。连要更新的数据也必须是long long。 1 #include <algorithm> 2 #include <iostream> 3 #include <iomanip> 4 #include <cstring> 5 #include <climits> 6 #include <complex> 7 #include <cassert> 8 #include <cstdio> 9 #include <bitset> 10 #include <vector> 11 #include <deque> 12 #include <queue> 13 #include <stack> 14 #include <ctime> 15 #include <set> 16 #include <map> 17 #include <cmath> 18 using namespace std; 19 20 typedef long long LL; 21 #define lrt rt << 1 22 #define rrt rt << 1 | 1 23 const int maxn = 100100; 24 LL sum[maxn<<2], add[maxn<<2]; 25 int n, q

通过boost库实现将c++封装成python包

家住魔仙堡 提交于 2020-03-08 02:36:58
资料 动态库与静态库:https://blog.csdn.net/wonengguwozai/article/details/93195827 第一部分 boost的下载与安装 1、从官网上下载boost库的压缩包 官网地址:https://www.boost.org/ ·可以下载最新版本,注意自己电脑的系统选正确 2、编译boost (1)解压boost文件 (2)命令行运行bootstrap.bat ·运行完成后会产生一个b2.exe文件 (3)命令行运行b2.exe ·等待一段时间,在命令行的最后获得提示要将两个地址放入环境。 3、配置环境 (1)注意是32位机还是64位 ·根据之前命令行结尾的提示 (2)在项目 -> vc++目录 -> 包含目录 添加解压包的地址 (3)在项目 -> vc++目录 -> 库目录 添加静态库的地址 (4)在项目 -> vc++目录 -> 包含目录 添加Anacond的include (5)在项目 -> vc++目录 -> 库目录 添加Anconda的libs 4、添加头文件 ·#include “boost/python.hpp” ·编译后会显示报错 错误 LNK1104 无法打开文件“boost_python37-vc141-mt-gd-x64-1_72.lib” 5、添加宏定义就可解决

求后序遍历

北战南征 提交于 2020-03-08 01:05:29
描述 输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列。 格式 输入格式 共两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串,表示树的中序遍历。 输出格式 一行,表示树的后序遍历序列。 样例 输入样例 abdec dbeac 输出样例 debca #include <iostream> #include <stdio.h> #include <cstring> #include <stdio.h> #include <algorithm> #include <cmath> using namespace std; //abdhecfg //hdbeafcg //hdebfgca char pre[100],mid[100],rear[100]; int find(char a[],int x){ int len = strlen(a); for(int i=0; i<len; ++i){ if(a[i] == x){ return i; } } return -1; } void solve(char a[], char b[],int as, int ae, int bs, int be){ int m = find(b, a[as]); // printf("m = %c\n",b[m]); if(m == -1){ return ; } int i; char

Qt标准输入框

北战南征 提交于 2020-03-08 00:57:16
//inputdlg.h #ifndef INPUTDLG_H #define INPUTDLG_H #include <QDialog> #include <QLabel> #include <QPushButton> #include <QGridLayout> #include <QDialog> class InputDlg : public QDialog { Q_OBJECT public: InputDlg(QWidget *parent = 0); ~InputDlg(); private slots: void ChangeName(); void ChangeSex(); void ChangeAge(); void ChangeScore(); private: QLabel *nameLabel1; QLabel *sexLabel1; QLabel *ageLabel1; QLabel *scoreLabel1; QLabel *nameLabel2; QLabel *sexLabel2; QLabel *ageLabel2; QLabel *scoreLabel2; QPushButton *nameBtn; QPushButton *sexBtn; QPushButton *ageBtn; QPushButton *scoreBtn;

Matlab与C++混合编程,添加OpenCV库

﹥>﹥吖頭↗ 提交于 2020-03-07 22:45:50
  最近在做运动医学软件优化工作,此款软件框架及算法语言全由matlab实现,虽然matlab矩阵运算、数值计算能力强大,但速度让人难以忍受。软件立刻移植到C++上又不太实际,故采用联合编程的方式,速度难以容忍的算法交给C++实现,C++在实现代码的过程中某些数值计算及图像处理算法调opencv库函数。   在网上有很多matlab编写mex函数调用opencv库的方法,但都不能直接拿来。经过一步步试验,修改,最终完成,现将过程及内容记录下来留给后来人参考。   第一步: (参考参考资料1,但其写的不够详细,对于初学者难懂)实现matlab、c++、opencv混合编程的编译器配置以及链接库的自动配置。参考资料2的方法虽然可行,但每次程序开启都要手动重新配置,很麻烦。   其实就是写了一个cppmake.m文件,它的功能类似于Makefile,实际上就实现了mex编译这个工程时候的编译规则。具体可以看后面的代码,然后就知道在里面做了什么了。 1 % This cppmake.m is for MATLAB 2 % Function: compile c++ files which rely on OpenCV for Matlab using mex 3 % Modified by Jessica 4 % Date : 2014-9-10 5 % HomePage: http:/

新版编译器编译内核 version `GLIBCXX_3.4.9\' not found

心不动则不痛 提交于 2020-03-07 22:44:48
编译内核出现以下错误: [root@localhost linux-2.6.32.2]# make zImage CHK include/linux/version.h make[1]: `include/asm-arm/mach-types.h' is up to date. CHK include/linux/utsrelease.h SYMLINK include/asm -> include/asm-arm CC kernel/bounds.s /opt/FriendlyARM/toolschain/4.4.3/libexec/gcc/arm-none-linux-gnueabi/4.4.3/cc1: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /opt/FriendlyARM/toolschain/4.4.3/lib/libppl_c.so.2) /opt/FriendlyARM/toolschain/4.4.3/libexec/gcc/arm-none-linux-gnueabi/4.4.3/cc1: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /opt

JAVA本地调用(JNI- java调用c)

这一生的挚爱 提交于 2020-03-07 22:07:47
记录一下工作内容,对术语了解不多,暂且这样记着吧。 java调用c 一、写jni的步骤如下: 1.创建java类,定义接口函数,使用native修饰; 2.将java类编译成class; 3.将class编译成*.h头文件; 4.在c/c++中实现java定义的接口函数; 5.将该c/c++的实现导出动态链接库; 6.将动态链接库放到java的库路径; 7.使用。 二、应该注意的一些问题: 1.注意该 java 类所在的包,包会影响导出的头文件的名称,还会影响到头文件的生成;代码中不要出现中文; 2.使用javac将类编译成class文件,该文件会出现在java文件同一目录下; 3.使用javah将class文件编译成头文件,这一步需要注意,如果该类在某个包下,需要在src路径下进行编译,最后给出例子。 4.在c/c++中实现时注意java类型和c/c++类型间的转换,我遇到的是jstring转换成char*的问题。 对于如下函数 JNIEXPORT void JNICALL Java_com_bbwang_JniTest_printMsg (JNIEnv *env, jobject o, jstring str) { } 如果是c实现,调用GetStringUTFChars时应该如下调用   const char *cstr = (*env)->GetStringUTFChars

JNI-入门之一

眉间皱痕 提交于 2020-03-07 22:07:19
下面我们开始编写HelloWorld程序,由于涉及到要编写c/c++代码因此我们会在开发中使用Microsoft VC++工具。 编写java代码 我们在硬盘上建立一个hello目录作为我们的工作目录,首先我们需要编写自己的java代码,在java代码中我们会声明native方法,代码非常简单。如下所示 class HelloWorld { public native void displayHelloWorld(); static { System.loadLibrary("hello"); } public static void main(String[] args) { new HelloWorld().displayHelloWorld(); } } 注 意我们的displayHelloWorld()方法的声明,它有一个关键字native,表明这个方法使用java以外的语言实现。方法不包括实现,因 为我们要用c/c++语言实现它。注意System.loadLibrary("hello")这句代码,它是在静态初始化块中定义的,系统用来装载 hello共享库,这就是我们在后面生成的hello.dll(如果在其他的操作系统可能是其他的形式,比如hello.so) 编译java代码 javac HelloWorld.java 生成HelloWorld.class文件 创建.h文件

JNI学习1

两盒软妹~` 提交于 2020-03-07 22:05:21
java是跨平台的语言,但是在有些时候仍然是有需要调用本地代码(通常由c/c++编写) sun公司提供的JNI是java平台的一个功能强大的接口。这个JNI接口提供了Java与操作系统本地代码相互 调用的功能。 Java中调用C/C++代码的步骤: 首先在java类中声明一个native方法。 bin/javah.exe 生成相应的c/c++头文件 按照生成的头文件编写对应的c/c++代码 编译生成dll 把dll文件加入到PATH环境变量下。 Java类中加载DLL,然后调用声明的Native方法。 使用JNI的两个弊端: 使用了JNI,那么这个Java Application将不能跨平台了。如果要移植到别的平台上,那么native代码就需 要重新进行编写。 Java是强类型的语言,而c/c++不是。因此,你必须再写JNI时更小心。 相关文件 TestNative.h /* DO NOT EDIT THIS FILE - it is machine generated */ #include "jni.h" /* Header for class TestNative */ #ifndef _Included_TestNative #define _Included_TestNative #ifdef __cplusplus extern "C" { #endif /* *

C++引用的实现

回眸只為那壹抹淺笑 提交于 2020-03-07 19:13:30
当我学习C++引用时,听到的第一句话是“引用是变量的别名,不像指针一样需要占用内存空间”。然而学到深处,发现此话并不完全正确。 本文主要介绍我如何通过实验来了解到C++引用的实现,其实 引用的内部就是指针 。当然这也于编译器有关,所以这里需要提及一下测试所用的编译器及环境。 测试环境是MinGW的g++ 8.1.0,64位编译器,64位的机子。所以指针的大小是8个字节,即64个bit。(注:因为目的是测试,所以测试时并没有处理对new操作符所产生对象的回收) 首先我写出了如下代码,试图通过指针偏移来获取有关引用的信息: #include <iostream> #include <string> using namespace std; int main() { int64_t x; string& str = *new string(); int64_t y; str = "123"; // 对引用做一次操作,避免编译器把变量优化掉 cout << &x << endl; cout << &y << endl; return 0; } 然而,这个程序的输出如下: 0x61fe00 0x61fdf8 难道引用真的不占内存?编译器真的很聪明,可能优化掉了吧;经过一系列尝试,我写出了另外一段代码: #include <iostream> #include <string> using