2011年11月22日

(转)c++ std::pair 与 std::make

转自http://code.jiaosha.org/question.aspx?url=wince159___79144d1723769b40f3de32cb.html std::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型。例如std::pair 或者 std::pair等。pair实质上是一个结构体,其主要的两个成员变量是first和second,这两个变量可以直接使用。初始化一个pair可以使用构造函数,也可以使用std::make_pair函数,make_pair函数的定义如下: template pair make_pair(t1 a, t2 b) { return pair(a, b); } 一般make_pair都使用在需要pair做参数的位置,可以直接调用make_pair生成pair对象。另一个使用的方面就是pair可以接受隐式的类型转换,这样可以获得更高的灵活度。但是这样会出现如下问题:例如有如下两个定义: std::pair(1, 1.1); std::make_pair(1, 1.1); 其中第一个的second变量是float类型,而make_pair函数会将second变量都转换成double类型。这个问题在编程是需要引起注意。下面是一段pair与make_pair的例子程序: 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int main () { 7 pair product1 ("tomatoes",3.25); 8 pair product2; 9 pair product3; 10 11 product2.first = "lightbulbs"; // type of first is string 12 product2.second = 0.99; // type of second is double 13 14 product3 = make_pair ("shoes",20.0); 15 16 cout << "the price of " << product1.first << " is $" << product1.second << "\n"; 17 cout << "the price of " << product2.first << " is $" << product2.second << "\n"; 18 cout << "the price of " << product3.first << " is $" << product3.second << "\n"; 19 return 0; 20 } 其运行结果如下: 1 the price of tomatoes is $3.25 2 the price of lightbulbs is $0.99 3 the price of shoes is $20 为了更好的了解pair与make_pair的机制,下面是其定义: 1 // template struct pair 2 template struct pair 3 { // store a pair of values 4 typedef pair<_ty1, _ty2> _myt; 5 typedef _ty1 first_type; 6 typedef _ty2 second_type; 7 8 pair(): first(_ty1()), second(_ty2()) 9 { // construct from defaults 10 } 11 12 pair(const _ty1& _val1, const _ty2& _val2): first(_val1), second(_val2) 13 { // construct from specified values 14 } 15 16 template 18 pair(const pair<_other1, _other2>& _right) 19 : first(_right.first), second(_right.second) 20 { // construct from compatible pair 21 } 22 23 void swap(_myt& _right) 24 { // exchange contents with _right 25 std::swap(first, _right.first); 26 std::swap(second, _right.second); 27 } 28 29 _ty1 first; // the first stored value 30 _ty2 second; // the second stored value 31 }; 32 33 34 template inline 35 pair<_ty1, _ty2> make_pair(_ty1 _val1, _ty2 _val2) 36 { // return pair composed from arguments 37 return (pair<_ty1, _ty2>(_val1, _val2)); 38 }

posted @ 2011-11-22 10:24 Livid 阅读(595) 评论(0) 编辑

2011年10月30日

ISTP,EI,SCI的区别

一、《科技会议录索引》ISTP
《科技会议录索引》(Index to Scientific & Technical Proceedings,简称ISTP)创刊于1978年,由美国科学情报研究所编辑出版。该索引收录生命科学、物理与化学科学、农业、生物和环境科学、工程技术和应用科学等学科的会议文献,包括一般性会议、座谈会、研究会、讨论会、发表会等。其中工程技术与应用科学类文献约占35%,其他涉及学科基本与SCI相同。
ISTP收录论文的多少与科技人员参加的重要国际学术会议多少或提交、发表论文的多少有关。我国科技人员在国外举办的国际会议上发表的论文占被收录论文总数的64.44%。
二、《工程索引》(EI)
《工程索引》(The Engineering Index,简称EI)创刊于1884年,是美国工程信息公司(Engineering information Inc.)出版的著名工程技术类综合性检索工具。EI每月出版1期,文摘1.3万至1.4万条;每期附有主题索引与作者索引;每年还另外出版年卷本和年度索引,年度索引还增加了作者单位索引。出版形式有印刷版(期刊形式)、电子版(磁带)及缩微胶片。EI选用世界上工程技术类几十个国家和地区15个语种的3500余种期刊和1000余种会议录、科技报告、标准、图书等出版物。年报道文献量16万余条。收录文献几乎涉及工程技术各个领域。例如:动力、电工、电子、自动控制、矿冶、金属工艺、机械制造、土建、水利等。它具有综合性强、资料来源广、地理覆盖面广、报道量大、报道质量高、权威性强等特点。
EI把它收录的论文分为两个档次
1 、EI Compendex 标引文摘 (也称核心数据)
它收录论文的题录、摘要,并以主题词、分类号进行标引深加工。有没有主题词和分类号是判断论文,是否被EI正式收录的唯一标志。
2 、EI Page One题录 (也称非核心数据)
主要以题录形式报到。有的也带有摘要,但未进行深加工,没有主题词和分类号。所以Page One 带有文摘不一定算做正式进入EI。
EI 对稿件内容和学术水平的要求
1、 具有较高的学术水平的工程论文, 包括的学科有:
—— 机械工程、机电工程、船舶工程、制造技术等;
—— 矿业冶金材料工程金属材料、有色金属、陶瓷塑料及聚合物工程等;
—— 土木工程建筑工程结构工程海洋工程水利工程等;
—— 电气工程电厂、电子工程、通讯自动控制计算机、计算技术、软件航空航天技术等;
—— 化学工程石油化工、燃烧技术、生物技术、轻工纺织、食品工业
—— 工程管理。
2、 国家自然科学基金资助项目、科技攻关项目、"八六三"高技术项目等。
3、 论文达到国际先进水平, 成果有创新。
EI不收录纯基础理论方面的论文。
EI也是魔兽争霸中著名的对战图Echo Isles的简写,是一张两人对战地图。

三、《科学引文索引》(SCI)

《科学引文索引》(Science Citation Index, SCI)是由美国科学信息研究所(ISI)1961年创办出版的引文数据库,其覆盖生命科学、临床医学、物理化学、农业、生物、兽医学、工程技术等方面的综合性检索刊物,尤其能反映自然科学研究的学术水平,是目前国际上三大检索系统中最著名的一种,其中以生命科学及医学、化学、物理所占比例最大,收录范围是当年国际上的重要期刊,尤其是它的引文索引表现出独特的科学参考价值,在学术界占有重要地位。许多国家和地区均以被SCI收录及引证的论文情况来作为评价学术水平的一个重要指标。从SCI的严格的选刊原则及严格的专家评审制度来看,它具有一定的客观性,较真实地反映了论文的水平和质量。根据SCI收录及被引证情况,可以从一个侧面反映学术水平的发展情况。特别是每年一次的SCI论文排名成了判断一个学校科研水平的一个十分重要的标准。 SCI以《期刊目次》(Current Content)作为数据源,目前自然科学数据库有五千多种期刊,其中生命科学辑收录1350种;工程与计算机技术辑收录 1030种;临床医学辑收990种;农业、生物环境科学辑收录950种;物理、化学和地球科学辑收录900种期刊。各种版本收录范围不尽相同。

在ISTP、 EI、 SCI这三大检索系统中,SCI最能反映基础学科研究水平和论文质量,该检索系统收录的科技期刊比较全面,可以说它是集中各个学科高质优秀论文的精粹,该检索系统历来成为世界科技界密切注视的中心和焦点。ISTP、EI这两个检索系统评定科技论文和科技期刊的质量标准方面相比之下较为宽松。                       


摘自:

 

posted @ 2011-10-30 13:59 Livid 阅读(101) 评论(0) 编辑

读取文件中数据,并赋值给二维数组

void main()
{
 int row, col;
 cout << "Please enter the number for row and column: " << endl;
 cin >> row >>col;

 //为二维数组开辟空间
 int **Result = new int*[row];
 for (int i = 0;  i < row;  i++)
 {
  Result[i] = new int[col];
 }

 ifstream fin("./data.txt");
 for (int i = 0; i != row; ++i) {
  for (int j = 0; j != col; ++j) {
   fin >> Result[i][j];
  }
 }
 fin.close();

 for (int w=0;w<row;w++)
 {
  for (int r=0;r<col;r++)
  {
   if(r<=w)
    cout<<0<<",";
   else
    cout<<Result[w][r]<<",";
  }
  cout<<endl;
 }

 //释放二维数组占用的空间
 for (int m = 0; m < row; m++)
 {
  delete[] Result[m];
 }
 delete[] Result;
 Result = NULL;
 //system("pause");
 return;
}

posted @ 2011-10-30 09:41 Livid 阅读(90) 评论(0) 编辑

2011年6月3日

度分秒转换经纬度 / 经纬度转换工具,从excel到google地图

一、经纬度的转化
1、MID:返回文本串 指定位置开始的特殊数目的字符
=(MID(B1,1,3))+MID(B1,5,2)/60+MID(B1,8,2)/3600+MID(B1,11,2)/21600

比如,B1是“038 45 02.00E”,则结果显示“38.7505555555556”

 

=(MID(C20,1,2))+MID(C20,4,2)/60+MID(C20,7,2)/3600

比如,C20是“38度44分46秒”,则结果显示“38.7461111111111”

 


2、INT:将任意实数向下取整为最接近的整数
     Round:四舍五入到某位数
=INT(A1)&"度"&INT((A1-INT(A1))*60)&"分"&ROUND(((A1-INT(A1))*60-INT((A1-INT(A1))*60))*60,0)&"秒"

比如,A1是109.90581,则结果显示“109度54分21秒”

 

二、经纬度转换工具,从excel到google地图

1、必须使用软件:ExceltoKml.exe,

2、软件的目的是,将excel2003文档格式转换成google地图格式kml

3、excel文档的第一列:站点名;第二列:经度;第三列:纬度;第四列:站点描述。excel文档的第一栏和第一列,就必须是站点数据,不得有其他描述性的数据,否则无法转换

4、经纬度的数据,必须是如“38.7461111”这种含小数点格式的数据,如果是“度分秒”格式的,请参照上头公式先行转换,否则无法使用转换软件。

5、ExceltoKml仅对excel文档的第一个工作表有效,且与工作表名称无关。excel必须是2003版本的。

 

http://lin2x.blog.163.com/blog/static/194660120107280405121/

posted @ 2011-06-03 10:26 Livid 阅读(269) 评论(0) 编辑

2011年5月20日

牛顿迭代法

用牛顿迭代法求f(x)=0在x0附近的一个实根的方法是:

(1) 选一个接近于x的真实根的近似根x1;

(2) 通过x1求出f(x1)。在几何上就是作x=x1,交f(x)于f(x1);

(3) 过f(x1)作f(x)的切线,交x轴于x2。可以用公式求出x2。由于f'(x1)=f(x1)/(x2-x1),故x2=x1-f(x1)/f'(x1)

(4) 通过x2求出f(x2);

(5) 再过f(x2)作f(x)的切线交x轴于x2;

(6) 再通过x3求出f(x3),…一直求下去,直到接近真正的根。当两次求出的根之差|xn+1-xn|≤ε就认为 xn+1足够接近于真实根。

牛顿迭代公式是:xn+1=xn-f(xn)/f'(xn)

牛顿迭代法的关键就是计算这个迭代公式,并在程序中进行迭代运算即可。该问题程序相对简单,就不列举了,控制一下迭代精度,直到达到需要目标即可。 有一个问题需要注意的是,该方法能够有效的基本条件是:迭代公式必须是收敛的( 也就是通过迭代运算,每一次的结果必须是更接近真实值的)。

 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jixingzhong/archive/2007/01/17/1486121.aspx

posted @ 2011-05-20 22:43 Livid 阅读(425) 评论(0) 编辑

2011年5月16日

office2010安装不成功 错误代码25004 问题解决

由于office2010试用版到期,今天重新安装,结果遇见安装不成功,分析原因应该是卸载残留文件不彻底导致失败,现分享解决方案:

卸载和清理上一次安装或卸载残留文件

对安装出现的问题,需要先确认是否存在上一次未安装或卸载完成的Office文件和目录,如果以前安装失败或未卸载干净,可能会影响本次安装结果。

1、优先使用微软官方的清理程序,点击下载:Windows Installer Cleanup Utility。安装后,运行Windows Install Clean Up,如果卸载目录发现Office 2007/2010等版本列表,只需要选中(按住SHIFT+鼠标左键多选),然后点击清理即可,清理完成后再次重试安装。

如果是Windows 7上安装Office 2007/2010遇到问题,先使用上述工具清理一下,然后:

A. 清理注册表中这两项:

HKEY_CURRENT_USER\Software\Microsoft\Office

HKEY_LOCAL_MACHINE\Software\Microsoft\Office

B. 打开Program files文件夹,删除"Microsoft Office"、"OfficeUpdate"、 "OfficeUpdate14"

C. 清理临时文件,在开始菜单输入"%Temp%"并回车,清空临时文件,假如有些文件无法删除,忽略即可。

D. 重启计算机再次尝试安装。

2、很多对未安装完成的程序,可能还未来得及进入程序组,如果Windows Install Clean Up没有发现安装残留,可以使用第三方卸载或清理程序,比如完美卸载等进行清理。或者使用天缘自己写的清理脚本:Office 2007、2010卸载清理问题及批处理

如果安装出现错误,可以先在控制面板——管理工具——事件日志(Event Viewer)里,查看应用程序的日志记录,看看是哪里报告的错误,然后尽可能的根据日志提示信息进行问题定位。

posted @ 2011-05-16 15:22 Livid 阅读(2711) 评论(1) 编辑

2011年5月9日

GPS定位精度单位CEP、RMS、2DRMS

摘要: 在GPS产品中厂家提供这么几个精度参数:CEP、RMS,下面将详细介绍一下这几个精度参数的意义:CEP和RMS是GPS的定位精度单位,也是个概率单位。就拿5M CEP说吧,意思是以5M为半径画圆,有50%的点能打在圆内,也就是说,GPS定位在5M精度的概率是50%,相应的RMS(66.7%)2DRMS(95%)当然很多商家愿意给出CEP,因为单位大了,前面的数就小了,好看。水平精度以圆概率误差(CEP) 意味着 50% 的结果在给出的圆直径内,50%的结果在圆外。RMS是1 sigma或1倍标准差,如果结果是无偏的,概率为67%。2dRMS是2 sigma或2倍标准差,概率为95%。他们的相互阅读全文

posted @ 2011-05-09 18:48 Livid 阅读(629) 评论(0) 编辑

2011年5月3日

影象分辨率和成图比列尺的关系(转)

摘要: 转载自 jxwking2010影像分辨率是决定影像精度的一个重要指标,影像精度要满足相应比例尺地图更新对于影像识别能力和成图精度要求,同时又要考虑地图更新成本。冗余的分辨率会增加卫星影像购买成本和加重内业处理的负担;而若分辨率达不到一定要求,细小的地物就无法判读、像片控制点精度得不到保证,满足不了成图精度。在选择合适的分辨率时,还要考虑最不利的生产条件。一般往往制图比例尺与卫星影像的关系是:比例尺=影像分辨率/肉眼分辨率 1原理: 卫星与航拍影像由像素点组成,像素点越丰富,照相辨认的细节的尺寸越小。影像照片上像素点的密度常用每毫米多少条线来表示,线越多表示影像质量越高。例如,卫星影像每平方毫米阅读全文

posted @ 2011-05-03 11:07 Livid 阅读(75) 评论(0) 编辑

2011年4月18日

预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)

摘要: 当 Visual C++ 项目启用了预编译头 (Precompiled header) 功能时,如果项目中同时混合有 .c 和 .cpp 源文件,则可能收到 C1853 编译器错误:fatal error C1853: 'pjtname.pch' precompiled header file is from a previous version of the compiler, or the precompiled header is C++ and you are using it from C (or vice versa)(致命错误C1853: “filename.pc阅读全文

posted @ 2011-04-18 20:39 Livid 阅读(3356) 评论(0) 编辑

2011年4月10日

C++ vector 类学习笔记(转)

摘要: 作者: tyc611, 2007-01-15 发表于: http://blog.chinaunix.net/u/18517/showart_232126.htmlvector容器类型 vector容器是一个模板类,可以存放任何类型的对象(但必须是同一类对象)。vector对象可以在运行时高效地添加元素,并且vector中元素是连续存储的。vector的构造函数原型:template<typename T> explicit vector(); // 默认构造函数,vector对象为空 explicit vector(size_type n, const T& v = T()阅读全文

posted @ 2011-04-10 00:31 Livid 阅读(110) 评论(0) 编辑