摘要:推荐方法一,方法二本人所写,给方法一比较简直就是刚学C 而且C也没学好,不会C++,面向对象的思想真不是一撮而就的事啊!我需要更加努力!加油。。。。。。。方法一:#include<iostream.h>#include<stdio.h>class date{private:int m_nYear, m_nMonth, m_nDay, m_nHour, m_nMin, m_nSec;int GetDay(int month);bool IsLeapYear();public:date(int,int,int,int,int,int);const date GetNextD
阅读全文
摘要:优先队列(priority_queue)的C语言实现 优先队列(priority_queue)和一般队列(queue)的函数接口一致,不同的是,优先队列每次出列的是整个队列中最小(或者最大)的元素。 本文简要介绍一种基于数组二叉堆实现的优先队列,定义的数据结构和实现的函数接口说明如下:一、键值对结构体:KeyValue// =============KeyValue Struct==================================typedef struct key_value_struct KeyValue;struct key_value_struct{int _key;v
阅读全文
摘要://在STL中,map是按键来排序的,但很多时候需要按值来排序。一种方法是将map转化为vector,然后排序。#include<iostream>#include<vector>#include<map>#include<string>#include<algorithm>usingnamespacestd;voidsortMapByValue(map<string,int>&tMap,vector<pair<string,int>>&tVector);intcmp(constpa
阅读全文
摘要:动态连接库的两种方式? 答案:调用一个DLL中的函数有两种方法: 1.载入时动态链接(load-time dynamic linking),模块非常明确调用某个导出函数,使得他们就像本地函数一样。这需要链接时链接那些函数所在DLL的导入库,导入库向系统提供了载入DLL时所需的信息及DLL函数定位。 2.运行时动态链接(run-time dynamic linking),运行时可以通过LoadLibrary或LoadLibraryEx函数载入DLL。DLL载入后,模块可以通过调用 GetProcAddress获取DLL函数的出口地址,然后就可以通过返回的函数指针调用DLL函数了。如此即可避免导入
阅读全文
摘要:一个完整的中断处理过程应该包括:中断请求、中断排队或中断判优、中断响应、中断处理和中断返回等环节,下面分别进行讨论。 1.中断请求 中断请求是由中断源向CPU发出中断请求信号。外部设备发出中断请求信号要具备以下两个条件: (1)外部设备的工作已经告一段落。例如输入设备只有在启动后,将要输入的数据送到接口电路的数据寄存器(即准备好要输入的数据)之后,才可以向CPU发出中断请求。 (2)系统允许该外设发出中断请求。如果系统不允许该外设发出中断请求,可以将这个外设的请求屏蔽。当这个外设中断请求被屏蔽,虽然这个外设准备工作已经完成,也不能发出中断请求。 2.中断排队 中断申请是随机的,有时会出现多个中
阅读全文
摘要:简述电路交换和分组交换的区别及优缺点。答:1)电路交换:由于电路交换在通信之前要在通信双方之间建立一条被双方独占的物理通路(由通信双方之间的交换设备和链路逐段连接而成),因而有以下优缺点。 优点: ①由于通信线路为通信双方用户专用,数据直达,所以传输数据的时延非常小。 ②通信双方之间的物理通路一旦建立,双方可以随时通信,实时性强。 ③双方通信时按发送顺序传送数据,不存在失序问题。 ④电路交换既适用于传输模拟信号,也适用于传输数字信号。 ⑤电路交换的交换的交换设备(交换机等)及控制均较简单。 缺点: ①电路交换的平均连接建立时间对计算机通信来说嫌长。 ②电路交换连接建立后,物理通路被通信双方独占
阅读全文
摘要:本文首先简要阐述哈夫曼算法的基本思想,然后介绍了使用哈夫曼算法进行文件压缩和解压缩的处理步骤,最后给出了C语言实现的文件压缩和解压缩的源代码。 哈夫曼算法的主要思想是: ①首先遍历要处理的字符串,得到每个字符的出现的次数; ②将每个字符(以其出现次数为权值)分别构造为二叉树(注意此时的二叉树只有一个节点);③取所有二叉树种种字符出现次数最小的二叉树合并为一颗新的二叉树,新二叉树根节点的权值等于两个子节点的权值之和,新节点中的字符忽略;④重复过程③直到所有树被合并为同一棵二叉树⑤遍历最后得到的二叉树,自顶向下按路径编号,指向左节点的边编号0,指向右节点的边编号1, 从根到叶节点的所有边上的0和1
阅读全文
摘要:计算机经典书籍 各种计算机语言的经典书籍1、Java Java编程语言(第三版)---Java四大名著----James Gosling(Java之父) Java编程思想(第2版)----Java四大名著----Bruce Eckel Java编程思想(第3版)----Java四大名著----------------Bruce Eckel JAVA 2核心技术 卷I:基础知识(原书第7版)---Java四大名著-----Cay Horstmann JAVA 2核心技术 卷II:高级特性(原书第7版)----Java四大名著-----Cay Horstmann Effective Java中文版
阅读全文
摘要:外排序(磁盘排序)之多路归并排序的简单实现(转)摘要:本文简要介绍了当数据量大到不适合在内存中排序时,利用磁盘进行排序的多路归并算法。关键字:外排序,磁盘排序,多路归并 下面以一个包含很多个整数的大文件为例,来说明多路归并的外排序算法基本思想。假设文件中整数个数为N(N是亿级的),整数之间用空格分开。首先分多次从该文件中读取M(十万级)个整数,每次将M个文件在内存中使用快排序之后存入临时文件,然后使用多路归并将临时文件中的数据牌号序存入输出文件。显然,该排序算法需要对每个整数做2次磁盘读和2次磁盘写。 下面代码是基于以上思想对包含大量整数文件的从小到大排序的一个简单实现,这里没有使用内存缓冲区
阅读全文
摘要:mportjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.Iterator;importjava.util.Random;/*** Purely informational so use at your own risk, it is not o
阅读全文
摘要:程序1:void myMalloc(char *s) //我想在函数中分配内存,再返回{s=(char *) malloc(100);}void main(){char *p=NULL;myMalloc(p); //这里的p实际还是NULL,p的值没有改变,为什么?if(p) free(p);}程序2:void myMalloc(char **s){*s=(char *) malloc(100);}void main(){char *p=NULL;myMalloc(&p); //这里的p可以得到正确的值了if(p) free(p);}程序3:#include<stdio.h>
阅读全文
摘要:#include <iostream>using namespace std; //调试用输出template <class Type>void Print(Type a[], unsigned int n){cout<<endl;for(int i=0; i<n; i++){ cout.width(4); cout<<a[i];}cout<<endl;}//冒泡排序(升序)//时间复杂性O(n*n)template <class Type>void BubbleSort(Type a[], unsigned int
阅读全文
摘要:Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。 Dijkstra算法是很有代表性的最短路算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。其基本思想是,设置顶点集合S并不断地作贪心选择来扩充这个集合。一个顶点属于集合S当且仅当从源到该顶点的最短路径长度已知。初始时,S中仅含有源。设u是G的某一个顶点,把从源到u且中间只经过S中顶点的路称为从源到u的特殊路径,并用数组di
阅读全文
摘要:#include"stdio.h"#include"string.h"#include<stdlib.h>#include<malloc.h>//#include<system>#define Max 20 /*结点的最大个数*/typedef struct node{ char data; struct node *lchild,*rchild;}BinTNode; /*自定义二叉树的结点类型*/typedef BinTNode *BinTree; /*定义二叉树的指针*/int NodeNum,leaf; /*No
阅读全文
摘要://二叉树层次遍历算法#include <stdio.h>#include <malloc.h>#define MaxSize 1000typedef char ElemType; typedef struct node { ElemType data; struct node *lchild; struct node *rchild;} BTNode;//创建二叉树void CreateBTNode(BTNode *&b,char *str){ BTNode *St[MaxSize],*p=NULL; int top=-1,k,j=0; char ch; b=
阅读全文
摘要:#include<iostream>using namespace std;int main(){int line=__LINE__;char *file=__FILE__;cout<<line<<endl<<file<<endl;return 0;}
阅读全文
摘要:STL 中 sort 函数用法简介 转自http://blog.csdn.net/rattles/article/details/5510919 做 ACM 题的时候,排序是一种经常要用到的操作。如果每次都自己写个冒泡之类的 O(n^2) 排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错。 STL 里面有个 sort 函数,可以直接对数组排序,复杂度为 n*log2(n) 。使用这个函数,需要包含头文件。 这个函数可以传两个参数或三个参数。第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一地址。也就是说,排序的区间是 [a,b) 。简单来说,有一个数组 int a[10
阅读全文
摘要:#include <cstdlib>#include <iostream>using namespace std;struct BiTree ///< 声明二叉树的结构 { int data; BiTree *left; BiTree *right;};// 插入节点值BiTree* InsertNode(BiTree* pRoot,int node) { BiTree* pCurrNode; ///< 声明目前节点指针 BiTree* pParentNode; ///< 声明父亲接点指针 BiTree* pNewNode = new BiTree;
阅读全文
摘要://怎么读取汉字#include<stdio.h>#include<stdlib.h>int main(){ FILE *fp; if((fp=fopen("D:\\123.txt","r"))==NULL) { printf("Error!\n"); exit(0); } //假设d盘的123.txt中有四个汉字:好好学习,下面的部分输出第一个汉字 char ch[3]; int i; for(i=0;i<2;i++) ch[i]=getc(fp); ch[i]='\0'; puts(c
阅读全文
摘要:问题描述】 利用Huffman编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接受端将传来的数据编码进行译码(复原)。对于有些信道,每端都需要一个完整的编/译码系统。试为这样的信息收发站编写一个Huffman的编/译码系统。给定一组权值{7,9,5,6,10,1,13,15,4,8},构造一棵赫夫曼树,并计算带权路径长度WPL。【数据描述】//- - - - - 赫夫曼树的存储表示 - - - - -typedef struct { unsigned int weight; unsigned int parent,l
阅读全文
摘要:1. 简介有些人说编程很难,有些人认为很容易。编程不仅依赖你的能力,而且还取决你工作的态度。编程的确很难,但比起那些需要伪装、欺骗和表演来生活的恶棍或者小丑来说,真的一点也不难。作为一个程序员,知道你在做什么,会让生活变得更加有趣和快乐。 2. 与不会说话的机器为伍计算机是不会说话的机器。除非你向它发送精确的指令,否则计算机是不会懂(你的意思)的。和哑巴一起工作,明显是困难的。因此,程序员必须很聪明。阿呆与阿瓜永远不会是一对好组合。 3. 计算机是专横的(一个不可避免的恶魔)不会说话的计算机明显也是专横的。计算机语言之所以如此的专横,其中的一个好的理由就是让程序变得更精确而且没有歧义。精确性是
阅读全文
摘要:++a是先自增,然后返回增加后的变量a,a是变量,本来就可以做左值,所以(a++)++正确;a++是后自增——在表达式里值还是原来的值——返回的是一个等于a+1的临时变量,临时变量是有const属性的,不可以更改,所以(a++)++错误。
阅读全文
摘要:类中申明的函数相对于类来说有三层意思:1.有this指针2.函数在类的作用区域中3.可以访问类中私有部分4.可以被继承非静态成员函数具有1234静态成员函数具有234友元函数具有3静态成员函数与友元函数的区别只是作用区域的不同 友元函数具有全局性 不慎使用可能会造成函数同名冲突虽然命名空间能解决一定的问题,但我还是偏向使用静态成员函数= =1.静态成员函数的地址可用普通函数指针储存,而普通成员函数地址需要用 类成员函数指针来储存。举例如下: class base{ static int func1(); int func2(); }; int (*pf1)()=&base::func1
阅读全文
摘要:C++ string类常用函数http://xiaocao000.spaces.live.com/blog/cns!F826A925CF33491A!117.entrystring类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常string类的字符操作:const char &am
阅读全文
摘要:c++ string详解http://read.newbooks.com.cn/info/119627.html之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。 好了,进入正题………首先,为了在我们的程序中使用string类型,我们必须包含头文件 。如下: #include //注意这里不是string.h s
阅读全文
摘要:介绍这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。Vector总览vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。为了可以使用vector,必须在
阅读全文
摘要:1.自定义Stack模板类#include <vector>#include <stdexcept>template <typename T>class Stack { private: std::vector<T> elems; // elements public: void push(T const&); // push element void pop(); // pop element T top() const; // return top element bool empty() const { // return whet
阅读全文
摘要:1.类模板与模板类的概念⑴什么是类模板一个类模板(也称为类属类或类生成类)允许用户为类定义一种模式,使得类中的某些数据成员、默写成员函数的参数、某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的)。如果一个类中数据成员的数据类型不能确定,或者是某个成员函数的参数或返回值的类型不能确定,就必须将此类声明为模板,它的存在不是代表一个具体的、实际的类,而是代表着一类类。⑵类模板定义定义一个类模板,一般有两方面的内容:A.首先要定义类,其格式为:template <class T>class foo{……}foo为类名,在类定义体中,如采用通用数据类型的成员,函数参数的前
阅读全文
摘要:在Ubuntu上开发应用,经常碰触触摸屏。这里罗列禁用触摸屏的方法。 网上常用的禁用方法是失败的。Ubuntu上禁用的方法。 1,安装sudo apt-get install tpconfig。 2,通过使用命令行,控制触摸屏的启动和关闭。 synclient touchpadoff=1#关闭 synclient touchpadoff=0 #打开Linux下通用鼠标控制。 sudo modprobe -r psmouse#关闭 sudo modprobe psmouse#加载
阅读全文
摘要:对于很多初学者来说,往往觉得回调函数很神秘,很想知道回调函数的工作原理。本文将要解释什么是回调函数、它们有什么好处、为什么要使用它们等等问题,在开始之前,假设你已经熟知了函数指针。 什么是回调函数? 简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。 为什么要使用回调函数? 因为可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件(如返回值为int)的被调用函数。 如果想知道回调函数在实际中有什么作用,先假设有这样一种情况,
阅读全文
摘要:译者前言一个C++程序员,想要进一步提升技术水平的话,应该多了解一些语言的语意细节。对于使用VC++的程序员来说,还应该了解一些VC++对于C++的诠释。Inside the C++ Object Model虽然是一本好书,然而,书的篇幅多一些,又和具体的VC++关系小一些。因此,从篇幅和内容来看,译者认为本文是深入理解C++对象模型比较好的一个出发点。这篇文章以前看到时就觉得很好,旧文重读,感觉理解得更多一些了,于是产生了翻译出来,与大家共享的想法。虽然文章不长,但时间有限,又若干次在翻译时打盹睡着,拖拖拉拉用了小一个月。一方面因本人水平所限,另一方面因翻译时经常打盹,错误之处恐怕不少,欢迎
阅读全文
摘要:1.Critical SectionA.速度快B.不能用于不同进程C.不能进行资源统计(每次只可以有一个线程对共享资源进行存取)2.MutexA.速度慢B.可用于不同进程C.不能进行资源统计3.SemaphoreA.速度慢B.可用于不同进程C.可进行资源统计(可以让一个或超过一个线程对共享资源进行存取)4.EventA.速度慢B.可用于不同进程C.可进行资源统计
阅读全文
摘要:8.当一个类A 中没有生命任何成员变量与成员函数,这时sizeof(A)的值是多少,如果不是零,请解释一下编译器为什么没有让它为零。(Autodesk)答案:肯定不是零。举个反例,如果是零的话,声明一个class A[10]对象数组,而每一个对象占用的空间是零,这时就没办法区分A[0],A[1]…了。29. 在8086 汇编下,逻辑地址和物理地址是怎样转换的?(Intel)答案:通用寄存器给出的地址,是段内偏移地址,相应段寄存器地址*10H+通用寄存器内地址,就得到了真正要访问的地址。30.比较C++中的4种类型转换方式?请参考:http://blog.csdn.net/wfwd/archiv
阅读全文
摘要:1.求下面函数的返回值(微软)int func(x){ int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx;}假定x = 9999。 答案:8思路:将x转化为2进制,看含有的1的个数。2. 什么是“引用”?申明和使用“引用”要注意哪些问题?答:引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个
阅读全文
摘要:C/C++ main()主函数执行前和执行后还能运行其它的吗?答案: 可以例如:#include<iostream>#include<string>using namespace std;string str="预备......";cout<<str<<endl;int fn1(){cout<<"中间"<<endl;return 0;}int main(){cout<<"开始"<<endl;_onexit(fn1);cout<<
阅读全文
摘要:Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。下面举例说明什么是一对一的数据映射。比如一个班级中,每个学生的学号跟他的姓名就存在着一一映射的关系,这个模型用map可能轻易描述,很明显学号用int描述,姓名用字符串描述(本篇文章中不用ch
阅读全文
摘要:Java面试题 第一,谈谈final,finally,finalize的差别。 final?修饰符(关键字)如果一个类被声明为final,意味着他不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。将变量或方法声明为final,能确保他们在使用中不被改动。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载 finally?再异常处理时提供finally块来执行所有清除操作。如果抛出一个异常,那么相匹配的catch子句就会执行,然后控制就会进入finally块
阅读全文
摘要:自从进入2011年9月以来,全国高校就开始迎来一年一度的校园招聘高峰,教育部规定,招聘企业最早可以进校园招聘的时间为11月20日,但很多企业纷纷提早进入各大高校“争夺”人才,越来越多的用人单位主动错开招聘高峰,尽量避免与同行企业出现“撞车”,这些因素导致名校校园招聘高峰期提前到来。用一家媒体的话来说,2011届毕业生就业形势---很给力。 但这些企业给出的Offer够不够给力呢?我们一起来看一下截止目前为止搜集到的2011年最新企业offer(待遇)比较吧!首先申明:1.今年最新企业的offer比较,主要是待遇方面的信息。2.信息皆来源于网络,但是可以保证都是今年的最新信息3.目的只是为了给街
阅读全文
摘要:C++的四种cast操作符的区别并非我的原创----------------------------------------------------------------------Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意?A:转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为了类型转换一个简单对象为另一个对象你会使用传统的类型转换操作符。比如,为了转换一个类型为doubole的浮点数的指针到整型:代码:int i;double d;i = (int) d;或者:i
阅读全文
摘要:-- 永久设置防火墙(重启不恢复) 开启:chkconfig iptables on 关闭:chkconfig iptables off-- 暂时设置防火墙(重启后恢复) 开启:service iptables start 关闭:service iptables stop
阅读全文
摘要:Windows 7系统中隐藏了一个秘密的“God Mode”,字面上译为“上帝模式”。God Mode其实就是一个简单的文件夹窗口,但包含了几乎所有Windows 7系统的设置,如控制面板的功能、界面个性化、辅助功能选项...方方面面的控制设置,用户只需通过这一个窗口就能实现所有的操控,而不必再去为调整一个小小的系统设置细想半天究竟该在什么地方去打开设置窗口。打开方法:在任何地方创建一个新文件夹,这个操作对于几乎所有电脑用户来说都非常简单,然后重要的是,将这个新文件夹重命名为“GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}”。确定,双击就可以打开了
阅读全文
摘要:C++常成员函数 - const 关键字一、常成员函数详解声明:<类型标志符>函数名(参数表)const;说明:(1)const是函数类型的一部分,在实现部分也要带该关键字。(2)const关键字可以用于对重载函数的区分。(3)常成员函数不能更新类的成员变量,也不能调用该类中没有用const修饰的成员函数,只能调用常成员函数。A、通过例子来理解const是函数类型的一部分,在实现部分也要带该关键字。class A{private: int w,h;public: int getValue() const; int getValue(); A(int x,int y) { w=x,h
阅读全文
摘要:SQL Server 索引和视图Ø 索引 1、 什么是索引 索引就是数据表中数据和相应的存储位置的列表,利用索引可以提高在表或视图中的查找数据的速度。 2、 索引分类 数据库中索引主要分为两类:聚集索引和非聚集索引。SQL Server 2005还提供了唯一索引、索引视图、全文索引、xml索引等等。聚集索引和非聚集索引是数据库引擎中索引的基本类型,是理解其他类型索引的基础。 # 聚集索引 聚集索引是值表中数据行的物理存储顺序和索引的存储顺序完全相同。聚集索引根据索引顺序物理地重新排列了用户插入到表中的数据,因此,每个表只能创建一个聚集索引。聚集索引经常创建在表中经常被搜索到的列或按顺
阅读全文
摘要:SQL Server T-SQL高级查询(转)高级查询在数据库中用得是最频繁的,也是应用最广泛的。Ø 基本常用查询--selectselect * from student;--all 查询所有select all sex from student;--distinct 过滤重复select distinct sex from student;--count 统计select count(*) from student;select count(sex) from student;select count(distinct sex) from student;--top 取前N条记录
阅读全文
摘要:方法一与方法二综合看:方法一:1. 解压到当前用户目录下:tar -zxvf ns-allinone-2.33.tar.gz2. 下载安装gcc和essential必须的系统包:sudo apt-get install build-essential3. 下载安装tcl和tk必须的系统包:sudo apt-get install tcl8.4 tcl8.4-dev tk8.4-dev4. 下载安装nam必须的系统包:sudo apt-get install libxmu-dev下载安装nam必须的系统包:sudo apt-get install nam5. 在ns-allinone-2.33目
阅读全文
摘要:C中的结构体和C++中结构体的不同之处:在C中的结构体只能自定义数据类型,结构体中不允许有函数,而C++中的结构体可以加入成员函数。C++中的结构体和类的异同:一、相同之处:结构体中可以包含函数;也可以定义public、private、protected数据成员;定义了结构体之后,可以用结构体名来创建对象。但C中的结构体不允许有函数; 也就是说在C++当中,结构体中可以有成员变量,可以有成员函数,可以从别的类继承,也可以被别的类继承,可以有虚函数。二、不同之处:结构体定义中默认情况下的成员是public,而类定义中的默认情况下的成员是private的。类中的非static成员函数有this指针
阅读全文
摘要:在linux命令提示符下运行gnuplot命令启动,输入quit或q或exit退出。plot命令gnuplot> plot sin(x) with line linetype 3 linewidth 2 或 gnuplot> plot sin(x) w l lt 3 lw 2 %用线画,线的类型(包括颜色与虚线的类型)是3,线的宽度是2,对函数sin(x)作图 gnuplot> plot sin(x) with point pointtype 3 pointsize 2 或 gnuplot> plot sin(x) w p pt 3 ps 2 %用点画,点的类型(包括颜
阅读全文
摘要:c++内存中字节对齐问题详解一、什么是字节对齐,为什么要对齐?(总结:一句话,在保证按结构体中最长的数据元素的字节个数对齐之后,还要保证整个结构体的长度一定是最长的数据元素的整数倍) 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对
阅读全文