C++
Akeron
这个作者很懒,什么都没留下…
展开
-
C语言 gets()和scanf()函数的区别
scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别。若想从键盘上输入字符串”hi hello”,则应该使用gets函数。gets可以接收空格;而scanf遇到空格、回车和Tab键都会认为输入结束,所有它不能接收空格。char string[15]; gets(string); /遇到回车认为输入结束/scanf(“%s”,string); /遇到空格认为输入结束/所以在输入转载 2017-03-08 09:39:45 · 259 阅读 · 0 评论 -
C++ strcpy与strncpy的注意事项
1. strcpy() strcpy的函数式为:strcpy(dst,src),因为char数组最后以’\0’为结尾,所以需要注意的是如果strlen(src)>strlen(dst)时,则最后的’\0’无法复制,则会导致出错,即dst的大小至少要等于src的大小,保证strcpy能复制最后的’\0’。2. strncpy() strncpy的函数式为:strcpy(dst,src,n),即原创 2017-11-22 22:03:39 · 791 阅读 · 0 评论 -
MapReduce原理
转载:http://my.oschina.net/itblog/blog/275294分析MapReduce执行过程 MapReduce运行的时候,会通过Mapper运行的任务读取HDFS中的数据文件,然后调用自己的方法,处理数据,最后输出。Reducer任务会接收Mapper任务输出的数据,作为自己的输入数据,调用自己的方法,最后输出到HDFS的文件中。整个流程如图:Mapper任务的转载 2017-11-18 20:12:23 · 304 阅读 · 0 评论 -
二维数组与双重指针
一、简介 1、二维数组int array[10][10];函数声明: void fun(int a[][10])函数调用:fun(array);访问: 一般使用a[i][j]来访问数组中的元素 2、指针数组int *array[10];函数声明:void fun(int *a[10]);函数调用:fun(array);访问:使用*(a[i]+j)访问数组中的元素3、指向指针的指针i转载 2017-10-31 13:48:33 · 1324 阅读 · 0 评论 -
#pragma pack(n)的作用
强调一点:#pragma pack(4)typedef struct{ char buf[3]; word a;}kk;#pragma pack()对齐的原则是min(sizeof(word ),4)=2,因此是2字节对齐,而不是我们认为的4字节对齐。这里有三点很重要: 1.每个成员分别按自己的方式对齐,并能最小化长度 2.复杂类型(如结构)的默认对齐方式是它转载 2017-10-23 10:50:00 · 415 阅读 · 0 评论 -
C++引用详解
引用的概念引用:就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名; 如下:定义引用ra,它是变量a的引用,即别名。 int a; int &ra=a; (1)&在此不是求地址运算符,而是起标识作用。 (2)类型标识符是指目标变量的类型。 (3)声明引用时,必须同时对其进行初始化。 (4)引用声转载 2017-10-23 10:39:09 · 313 阅读 · 0 评论 -
C++ ofstream写文件时OD错误 ifstream读文件时0x20错误
前一阵子用C++写东西,需要往文件里写数据,很简单的代码,大概是这个样子:#include <fstream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ ofstream fout; fout.open("d://test.dat"); int a = 0x7788; fout.write((char*) &a, siz转载 2017-10-10 13:58:45 · 1655 阅读 · 0 评论 -
最小生成树Kruskal算法与并查集及其优化
#include<bits/stdc++.h>using namespace std;struct Road{ int from; int to; int weight; bool operator <(Road b) const{ return weight<b.weight; }};int arr[1001];Road arr2[1000原创 2017-03-10 09:43:22 · 920 阅读 · 0 评论 -
Dijkstra算法
#include<bits/stdc++.h>using namespace std;struct Edge{ int next; int cost;};vector<Edge> v[101];int Dis[101];bool mark[101];int main(){ long long num; long long val,temp1,temp2,temp3原创 2017-03-10 14:06:23 · 650 阅读 · 0 评论 -
最短路径Floyd
#include<bits/stdc++.h>using namespace std;int arr[1001][1001];int main(){ long long num; long long val,temp1,temp2,temp3; while(scanf("%lld",&num)!=EOF&&num!=0){ scanf("%lld",&val)原创 2017-03-10 11:31:33 · 405 阅读 · 0 评论 -
C++大数阶乘
#include<bits/stdc++.h>using namespace std;long long res[10002];const long long d=1e+9;int main(){ long long num; long long val,temp1,temp2; while(scanf("%d",&num)!=EOF){ long long原创 2017-03-09 16:47:09 · 628 阅读 · 0 评论 -
C++快速求幂a^b
原理:a^b=a^(Binary(b)) 例如: 2^3=2^(11)=2^(10+01)=(2^10)*(2^01); 而二进制中每后一位的权重都是前一位的2倍,故(2^10)=(2^01)*(2^01)。#include<bits/stdc++.h>using namespace std;long long arr[100];int main(){ long long num;原创 2017-03-09 12:58:29 · 4914 阅读 · 0 评论 -
关于Scanf和Printf函数的一些知识点
1.连续输入 如果输入的数值为连续的八位数字,且想前四位归第一个变量,后面每两位一个变量,例如日期的输入20170306,则可以用如下的方法输入:scanf("%4d%2d%2d",&year,&month,&day);则结果为:year=2017; month=3; day=6;2.printf输出补0 当输出的位数较多但是想让其无值部分为0时,例如6位,输出100,则输出000100,可以用原创 2017-03-06 09:42:11 · 490 阅读 · 0 评论 -
C++素数筛选法
const int arrSize=100001; int prime[arrSize]; //保存素数 int primeSize; //限定范围内素数个数 bool mark[arrSize]; //用来做标记 void primeFilter(){ primeSize=0; for(int i=2;i<arrSize;i++){ if(!mark[i])原创 2017-03-08 22:13:38 · 2704 阅读 · 0 评论 -
输出A+B的M进制
#include<bits/stdc++.h>using namespace std;int arr[100];string getM(long long value,int num){ string str=""; if(value==0) return "0"; //要注意有0的情况 while(value!=0){ str+=value%num+'0';原创 2017-03-08 15:31:09 · 687 阅读 · 0 评论 -
C++建立二叉排序树
#include<bits/stdc++.h>using namespace std;class Node{ public: Node* left; Node* right; int content; Node(){ left=NULL; right=NULL; }原创 2017-03-08 13:53:12 · 1307 阅读 · 0 评论 -
C++根据前序遍历和后序遍历建二叉树
#include<bits/stdc++.h>using namespace std;class Node{ public: Node* left; Node* right; char content; Node(){ left=NULL; right=NULL;原创 2017-03-08 13:03:34 · 1262 阅读 · 0 评论 -
C++逐行读取文件
使用getline()函数可实现逐行读取: ifstream in(argv[1]); if (!in.is_open()) cout << "Error" << endl; else { string buf; while (!in.eof()) { getline(in, buf原创 2017-11-22 22:10:32 · 1481 阅读 · 1 评论