
C++/JAVA等学习笔记
文章平均质量分 64
小村长
大学在校研究生一枚,关注方向:计算机视觉,数据结构,C希望和大家交流,共同提高
微博:http://weibo.com/u/2653613245 欢迎交流!
展开
-
stringstream的用法
使用stringstream对象简化类型转换C++标准库中的提供了比ANSI C的更高级的一些功能,即单纯性、类型安全和可扩展性。在本文中,我将展示怎样使用这些库来实现安全和自动的类型转换。为什么要学习如果你已习惯了风格的转换,也许你首先会问:为什么要花额外的精力来学习基于的类型转换呢?也许对下面一个简单的例子的回顾能够说服你。假设你想用sprintf()函数将一个变量从int转载 2013-10-21 21:23:23 · 1865 阅读 · 0 评论 -
【Linux编程】C/C++获取目录下文件或目录及linux中fork()函数详解(原创!!实例讲解)
在Unix/Linux系统中,要获取一个指定目录下所有的文件或文件夹,一般用dirent.h(POSIX标准定义的目录操作头文件)。一、数据类型在头文件中定义了两种主要的数据类型。DIR:代表一个目录流的结构。12345678910111213struct __dirstream{ void *__fd转载 2015-07-05 20:29:29 · 7063 阅读 · 0 评论 -
C++中的多态性和纯虚函数
C++的多态性: 当C++中在继承时会发生函数覆盖(覆盖的概念我的上一篇blog),此时如果将子类对象的地址赋给父类对象的指针,用该指针调用函数时,当子类中有这样的函数,则调用子类的函数,如果没有,则调用父类的函数,这种技术也被称为迟绑定技术。。如果父类的函数没有加virtual,则此时会调用父类的函数,这也被称为早期绑定。下面看例子:Animal.h#ifndef Anim原创 2013-05-30 11:07:00 · 2937 阅读 · 4 评论 -
C++中动态申请二维数组
这里主要介绍C++中动态申请二维数组的两种方式,直接给出代码,很容易明白,简单的作为一个笔记。#include #include // 输入输出操纵 #include using namespace std;// 法一:new 方式申请void dynamicArray(){ int rows, cols; cin >> rows >> cols; i原创 2014-08-26 14:56:39 · 2143 阅读 · 0 评论 -
C++ 迭代器及运算符优先级
1. 迭代器(iterator)是一中检查容器内元素并遍历元素的数据类型。(1) 每种容器类型都定义了自己的迭代器类型,如vector:vector::iterator iter;这条语句定义了一个名为iter的变量,它的数据类型是由vector定义的iterator类型。(2) 使用迭代器读取vector中的每一个元素:vector ivec(10,1);for(vector转载 2013-11-16 14:54:36 · 3680 阅读 · 0 评论 -
C++中子类如何调用不同父类中的同名函数?
当C++中多继承时,父类中可能含有同名函数,此时子类如何调用呢? 直接贴代码:#include class B1{public: void output();};class B2{public: void output();};void B1::output(){ cout<<"call the class B1"<<endl;}void B2::output(原创 2013-05-29 18:19:59 · 8828 阅读 · 0 评论 -
struct 字节对齐详解与大小端模式
一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的转载 2015-04-02 14:17:57 · 7570 阅读 · 0 评论 -
C++ 虚函数表解析
前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使转载 2015-01-06 14:07:17 · 1140 阅读 · 0 评论 -
Memset给非字符型数组进行赋值
Memset一般都是按字节进行赋值,都是给字符型数组赋初值。给字符型数组赋值的知识及问题可以见百度百科:链接。我们主要讲解给非字符型数组如int的一维或二维数组初始化为0的操作。需要的头文件:or 一维数组赋值0: int a[5];memset(a,0,5*sizeof(int)); 二维数组赋值0: int a[4][4];原创 2014-09-10 19:58:39 · 2629 阅读 · 0 评论 -
C++中字符数组和字符串string
字符数组C++中字符数组用char str[]可以用来表示一个字符串。(1) 数组的大小和字符串的长度。数组的大小一定要大于字符串的长度,因为系统会自动补上一个’\0’作为字符串的结束标志。当然对于未初始化的也补’\0’.#include #include using namespace std;int main(){ char str[11] = "I am h原创 2014-09-19 22:50:50 · 33339 阅读 · 1 评论 -
C++中函数覆盖 隐藏 重载区别
C++在继承这一节涉及到函数覆盖 隐藏 重载等,如何区别它们呢?首先函数覆盖的条件:基类函数必须是虚函数 发生覆盖的两个函数要分别位于派生类和基类中 函数名称和参数列表完全相同其次函数隐藏主要有以下两种情况:原创 2013-05-30 10:29:52 · 2151 阅读 · 0 评论 -
面试笔试
最近需要找工作了,特将遇到的面试笔试题总结在这里,希望对大家也有帮助1:不能被继承只能被实例化3次分析:不能被继承,只需要将该类的构造函设置为私有的就可以了,那么如何得到它呢,只能通过静态函数得到了(不能创建对象,自然不能用对象调用函数)。。当然如果用指针,必须得有析构,因此析构函数也为私有的。。。(为了防止赋值和复制,复制构造函数及赋值操作符都要为私有)。此外代码中也可以用引用类型。原创 2015-06-05 22:20:55 · 1957 阅读 · 0 评论 -
new和malloc的区别及内存管理及char[]与char*区别
1. malloc()函数1.1 malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针,分配失败返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。1.转载 2015-03-10 19:47:13 · 4952 阅读 · 0 评论 -
leetCode 101/199-Symmetric Tree/Binary Tree Right Side View
链接:https://leetcode.com/problems/symmetric-tree/此题就是判断一棵二叉树是否为对称二叉树,刚开始以为中序遍历输出,然后看是否是为回文字串,但是这种思路是错了,如[1,2,3,#,3,#,2].代码如下:通过循环递归判断左孩子的左子树与右孩子的右子树 及 左孩子的右子树与右孩子的左子树即可得到结果。class Solution {pub原创 2015-04-02 18:40:13 · 1252 阅读 · 0 评论 -
NULL, '\0',0 '0'的区别及32位和64位类型大小
如题,在程序中经常遇到NULL,和'\0',常常疑惑它们是什么关系,其实它们的值是一样的,只不过表现的形式不一样: 1、NULL; NULL 即空指针,在C和C++中的形式不一样,msdn上有如下的内容那个:#if !defined(NULL)&&defined(__NEEDS_NULL)#ifdef __cplusplus#define NULL 0转载 2015-01-15 21:13:21 · 2055 阅读 · 0 评论 -
设计模式初识
首先声明的是我对设计模式了解比较少,也才是刚刚接触,还有很多不懂的地方,这里写blog只是为了记录下看c++编程思想中的设计模式这一章,以便后续查看。 设计模式是国外4人合编的《Design Patterns》一书,这本书一般也被称为”四人帮”(Gangof Four, GoF)书。”四人帮”针对问题的特定类型提出了23中解决方案,即23个模式。定义为:每一个模式描述了一个在我们原创 2015-01-23 22:36:57 · 1608 阅读 · 0 评论 -
生成N个不同的随机数(C++,范围0~N-1)
做项目的过程往往具有随机选取等过程。此笔记主要给出了随机生成N个不同的随机数的两种方法,然后简单的介绍了C++中随机数主要用到的函数srand,rand和time。最后给出了一个简单的例子,即从一个含有N张图片的文件夹中随机选取K张图片存入另外一个文件夹。一:产生N个不同随机数的方法#include #include #include#define N 20#define K 1原创 2014-12-10 20:01:44 · 15192 阅读 · 2 评论 -
B树
概念:B树就是一种数据结构,是为磁盘或者其它直接存取的辅助存储设备而设计的一种平衡查找树。许多数据库系统都是采用B树或者B树的变形来存储信息。磁盘的结构:定位一个磁盘中的数据,一般由柱面(磁道组成的圆柱)、盘面和盘块号三部分组成,通常cpu都是以盘块大小为基本单位进行读取的,盘块的大小一般为几KB.故而在磁盘中读取数据所消耗的时间主要就由查找磁道(查找时间)和等待时间(盘块号旋转到磁头下)的时原创 2015-03-29 21:50:52 · 1475 阅读 · 0 评论 -
C/C++中main函数参数说明
int main( int argc , char *argv[] , char *envp[] ) main()函数一般用int或者void形的。我比较喜欢用int型定义main。因为在结束的时候可以返回给操作系统一个值以表示执行情况。 int argc 这个东东用来表示你在命令行下输入命令的时候,一共有多少个参数。比方说你的程序编译后,可执行文件是test.exe D:\t转载 2013-09-05 16:12:10 · 2714 阅读 · 0 评论 -
C++标准库类型vector及迭代器iterator简介
Vector是C++标准库类型,称为容器,一个容器中的所有对象必须是同一种类型的。与数组相比,其最大的优点就是动态增长。Vector是一个类模板,并不是数据类型,而vector和vector才是数据类型。其下标的类型为vector::size_type类型。1:vector对象的定义和初始化 vector v vector v(v1) v1 是v的一个副本原创 2013-09-02 13:47:04 · 2248 阅读 · 0 评论 -
一个C++老鸟眼中的 C++ VS Java
语言本身没有优劣之分,但程序员有强弱之别。1、在内存管理方面 在这方面我更欣赏java,也认为这是java比C++更易用的重要原因。C++的用户自己管理内存和灵活的指针用法往往让用户为了一个内存问题而调试好几天。让用户自己释放内存使得用户必须非常小心,在程序有多个出口或指针被多个线程或被多个容器拥有的情况下,何时能安全的释放内存都必须非常谨慎的,而且还要保证在程序的转载 2013-07-25 11:20:14 · 1734 阅读 · 1 评论 -
C++中声明与定义~~extern
变量的定义:用于为变量分配存储空间,还可以为变量指定初始值,在一个程序中,变量有且仅有一个定义。变量的声明:仅仅给出变量的类型和名字,并不为其分配存储空间和初注意 :一个project中可以包含多出声明,但只能有一处定义extern简介:比如我们在a.cpp中定义了int result=100;此时我们需要在b.cpp c.cpp等中使用result就可以用extern,而不需在每个cpp中重新定原创 2013-05-31 10:24:23 · 1236 阅读 · 0 评论 -
C++中的文件输入/输出
简介本教程将以C++最基本的文件I/O(输出/输出)开始。此后,我将从更深入的方面,为你展示一些技巧,并分析给出一些有用的函数。你需要对C++有一个较好的理解,否则这个教程于你而言将是陌生而毫无用处。 你的第一个程序 首先我将给出一段代码,接着再逐行进行解释。我们的第一个程序将建立一个文件,并写入一些字符: #include转载 2013-09-09 22:02:29 · 3591 阅读 · 0 评论 -
一道c++小编程题,
题目:编写一个小程序,从标准输入读入一系列string对象,寻找连续重复出现的单词,程序应该找出满足以下条件的单词的输入位置:该单词的后面紧跟着再次出现自己本身,跟 踪重复次数量多的单词及其重复次数.输出重复次数的最大值,例如.如果输入是:how now now now brown cow cow则输出表明now这个单词出现了三次本人解法:#include #incl原创 2013-09-04 14:54:55 · 1951 阅读 · 3 评论 -
已知一指针p,你可以确定该指针是否指向一个有效的对象吗?如果可以,如何确定?如果不可以,请说明原因。
这个问题我的思路是:首先用*p将其值输出来,如果编译器报错,证明p指向一个无效的对象,要么p=0要么p未进行初始化,此时可以用if(p == NULL)进行判断即可,不知道大家是否有好的思路噻。。。原创 2013-09-02 14:42:41 · 4839 阅读 · 5 评论 -
C++标准库 vector排序
前天要做一个对C++ STL的vector容器做一个排序操作,之前一直把vector当做一个容量可自动变化的数组,是的,数组,所以打算按照对数组进行排序的方法:用快速排序或是冒泡排序等算法自己写一个排序的函数。后来觉得STL这么强大,应该有它自己的排序方法(没有好好学习啊),然后就去google了一下,果然有,而且可以自定义排序的函数,太强大了(而且效率应该比我自己写的要好吧)。转载 2014-07-07 09:51:15 · 1753 阅读 · 0 评论 -
递归和迭代的区别
递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己.一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量.递归的能力在于用有限的语句来定义对象的无限集合.使用递归要注意的有两点:1)递归就是在过程或函数里面调用自身;2)在使用递归时,必须有一个明确的递归结束条件转载 2014-08-26 21:49:53 · 1086 阅读 · 0 评论 -
windows+php5.5+apache2.4+tomcat+mod_jk配置
原因:通常情况下apache运行的是80端口,比如apache启动后运行localhost:80就可以出现It works页面,这里的80也可以不写,会默认的。而tomcat启动时默认的端口是8080端口,需要在localhost后面加上8080,但这样比较不专业,域名还带端口,因此我们可以在tomcat的server.xml修改为80。但此时的问题出来了,当已有一个php写的项目在使用apa原创 2014-11-04 21:38:17 · 7947 阅读 · 1 评论 -
对自定义对象进行排序(C++/Java)
自定义了对象,如何按照自定对象中某一或多个元素对其进行排序呢?以下分别从C++和java对其进行实现。一:C++/*实现对自定义的对象类型进行排序(按照其中的元素),首先将对象存放在vector中,然后利用algorithm库函数中的sort对其进行排序,需要重写排序函数以函数名作为函数指针作为sort的第三个参数*/#include #include #include原创 2014-12-06 17:08:55 · 4152 阅读 · 0 评论 -
容器query与list
简单了写了query和list的实现,特将代码放在这里,以备后续查看。query:QueryItem.h#ifndef QUEUEITEM#define QUEUEITEM#include using namespace std;template class Queue;template ostream& operator &);template istream&原创 2015-01-15 14:07:17 · 1288 阅读 · 0 评论 -
文本查询小例子---涉及多态 句柄类
最近实现了c++prime上的文本查询的小例子,见第四版15章最后一节。涉及到了多态,句柄类,故在此给出实现的源代码,以便后续查看。一:系统要求:图片无法上传---待传二:代码(1)queryWord.h ------------queryWorld是真正用来实现保存的数据结构及查询操作的。#ifndef QUERYWORD#define QUERYWORD#include原创 2015-01-15 16:09:03 · 1213 阅读 · 0 评论 -
C++学习笔记一
一:异常处理 异常是程序执行期间预期发生的错误。它是程序正常功能之外程序无法解决的问题。通常问题的检测和问题的处理相互分开。在问题的检测端通过throw抛出异常对象(或在try语句中通过调用抛出异常的函数),问题处理端通过catch捕获抛出异常的对象。这里传递的对象可以是对象的副本或者引用和指针,但是指针不应该是指向局部对象的指针,否则抛出异常后,该对象就被释放了,就无法再使用该对原创 2015-01-21 15:07:15 · 1230 阅读 · 0 评论 -
Java写的自动抢购红米note手机(2016/4/6 米粉节)
受同学所托,帮其抢红米手机,老是抢不到,于是就想着写个程序,多线程实时监听,虽然最终还是没抢到,但还是将程序分享给大家。(其实在排除学校网速的影响下,我真怀疑雷总到底有没有发布小米手机让大家抢,所以还是建议大家尽量不要抢小米手机,太坑!) 程序使用java写的,采用Maven构建的一个项目,采用selenium包。这里先给出平台的搭建,后续给出相应的程序代码。1:使用Maven模原创 2016-04-17 16:42:09 · 8502 阅读 · 6 评论