此程序实现简化的linux中的tac命令.即对文件按行倒序输出. 首先将文件指针置于文件尾,从后向前移动指针, 将两个换行符'\n'间的内容作为一行输出. #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<sys/types.h> #include <sys/stat.h> #include <fcntl.h> #define BUFSIZE 4096 c…
本程序实现从文件中随即选取一行,每行被选中的概率与改行长度成正比. 程序用一次遍历,实现带权随机选取. 算法:假设第i行权重wi(i=1...n).读取到文件第i行时,以概率wi/(w1+w2+...+wi) 用该行替换上一轮被选中的行,直至读取文件结束.这样可以从数学上保证i行 被选中的概率为wi/(w1+w2+...+wn); #include<stdio.h> #include<stdlib.h> #include<string.h> #include<ti…
在Linux下编程习惯了使用命令行参数,故使用VS2010时也尝试了一下. 新建项目,c++编写程序如下: #include<iostream> #include<fstream> using namespace std; int main(int argc,char*argv[]) { ifstream fin(argv[1],ios::in);//输入方式打开文件 //ifstream fin;fin.open(argv[1],ios::in); ofstream fout(a…
本程序实现了egrep命令,首先将正则表达式转换为NFA,并实现模拟NFA的算法. 本程序使用flex实现词法分析,bison实现语法分析 若给定的一行字符串中存在一个字串能被该NFA接受,则输出整行. 所用语法如下: S-->S|S    |SS    |S*    |(S) |a bison程序: %{ #include <string> #include <iostream> #include <fstream> #include <sstream&g…
本程序实现在指定目录下递归查找无效的符号链接. 1.设计思路 逐个读取给定目录中的目录项,判断类型 (1)若为目录,则读取该目录中的目录项并判断类型: (2)若为链接文件,则读取出其指向文件的名称(绝对/相对路径): 若内容为绝对路径(以/开头),直接作为目标文件的路径: 若内容为相对路径(不以/开头),将链接文件所在目录的路径作为前缀: 这样构造出目标文件的路径,尝试用stat函数直接读取目标文件,若返回-1 则认为该链接文件失效.选用stat的好处是可以跳过连续符号链接,查看链接 最终指向的…
在平常项目中,我们会遇到这样的业务场景: 客户希望把自己的门店绘制在百度地图上,通过省.市.区的选择,然后加载不同区域下的店铺位置. 先看看效果图吧: 实现思路: 第一步:整理行政区域表: 要实现通过地区筛选来动态加载地图,首先要有一套中国行政区域表.哪里来呢?如果你做过淘宝API接入,应该会想到淘宝物流接口提供了一个官方的行政区域代码,这个比较靠谱. 第二步:收集行政区域的经纬度: 这个就有点麻烦了,虽然可以在百度坐标拾取系统一个一个的收集整理,但是3000多条记录,是个不小的体力活.于是经过…
const是C语言的关键字,经C++进行扩充,变得功能强大,用法复杂.const用于定义一个常变量(只读变量),当const与指针,引用,函数等结合起来使用时,情况会变得复杂的多.下面将从五个方面总结const的用法. 1.const位置 const位置较为灵活,一般来说,除了修饰一个类的成员函数外,const不会出现先一条语句的最后.示例如下: #include <iostream> using namespace std; int main(int argc,char* argv[]) {…
浅谈new operator.operator new和placement new C++中使用new来产生一个存在于heap(堆)上对象时,实际上是调用了operator new函数和placement new函数.new即new operator,是C++保留的关键字,我们无法改变其含义,但我们可以改变new完成它功能时调用的两个函数,operator new()和placement new().operator new()用于申请heap空间,功能类似于malloc(),placement…
#include <cstdio> #include <iostream> #include <cstring> #include <queue> #include <vector> using namespace std; #define INF 0x7fffffff struct edge { int t; long long d; }; vector<edge> g[20005]; int n, m, p, q; void Sp…
#include<iostream> #include<cstdio> #include<algorithm> #define Max 1005 using namespace std; struct line{ double x, y1, y2; int flag; }x_line[Max]; struct node{ int l, r, flag; double x, f; }tree[Max]; double point[Max]; int n, m, xm; i…