C++ & Java
打工人小飞
公众号:机器修行
展开
-
C++ 知识点梳理
new/delete 与 malloc/free的区别malloc/free是标准库函数,new/delete是C++运算符。运算符是语言本身的特性,有固定的语义,由编译器解释语义。库函数是依赖于库的,一定程度上独立于语言,编译器不关心库函数的作用。delete会调用对象的析构函数, free只会释放内存,new调用构造函数。malloc/free是库函数而不是运算符,不在编译器控制权限之...原创 2018-08-22 17:58:10 · 1308 阅读 · 1 评论 -
BFS 解决 Word Ladder 问题
资源来源于 LeetCode127——Word Ladder。题目描述如下: 以题目给出的例子为例,其实就是在所有路径的权重都为1的情况下求出下列无向图中从节点 hit 到节点 cog 的最短路径: Postscript:图中相互之间只相差一个字母的单词都是相邻节点。这个就是图论算法中的单源最短路,求单源最短路比较通用的算法是 BFS 和 Dijkstra 算法,其区别是 BFS 不能用于带原创 2018-04-27 12:20:18 · 890 阅读 · 0 评论 -
二叉树的相关操作回顾(C++实现)
二叉树的初始化思路: 使用队列,队首出队一个元素队末进两个元素,而这两个元素正好是这个队首元素的左右节点。比如我们给定这样的一组数据:{1, 2, 3, 4, 5, 0, 6, 0, 7, 8, 9} (假设0代表空),则可构建二叉树如下: 整个建树以及遍历过程,在这里不细说,该篇博客主要是对数据结构中二叉树的相关具体实现做回顾与备忘。废话不多说,直接上代码:#include <iostream原创 2018-04-04 21:43:57 · 607 阅读 · 2 评论 -
使用const定义常量,inline定义小型函数
使用 const 而不是 #define 来定义常量C使用预处理器来创建常量的符号名称:#define MAX_LENGTH 100而C++最好在变量申明使用限定符 const:const int MAX_LENGTH = 100;使用const的方法有很多优越性。首先,显示指定类型。使用#define时,必须在数字后面加各种后缀来指出除 char、int 或 double 之外的类型。例如,使用1原创 2016-01-22 11:28:21 · 1670 阅读 · 3 评论 -
C++实现读取文本文件数据到vector中
如题,要将如下文本文件读进vector中: #include <iostream>using namespace std;#include <cmath>#include <vector>#include <fstream>//将文本文件中得数据读入vector中,并返回一个vector。vector<int> *InputData_To_Vector(){ vector<in原创 2016-01-21 10:04:14 · 27867 阅读 · 1 评论 -
c++ STL中的set容器
c++ stl集合set介绍 c++ stl集合(Set)是一种包含已排序对象的关联容器。set/multiset会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。1) 不能直接改变元素值,因为那样会打乱原... c++ stl集合set介绍 c++ stl集合(Set)是一种包含已排序对象的关联容器。set/multiset会根据待定的排序原创 2015-08-07 10:59:50 · 5463 阅读 · 0 评论 -
C++格式化输出
#include #include using namespace std;int main( void ){ const double value = 12.3456789; cout << value << endl; // 默认以6精度,所以输出为 12.3457 cout << setprecision(4) << value << endl; // 改原创 2015-08-07 10:28:01 · 692 阅读 · 0 评论 -
STL中map的简单应用(合并表序列)
描述数据表记录包含表索引和数值。请对表索引相同的记录进行合并,合并后表记录为相同索引表的数值求和 函数说明:public int mergeRecord(List oriList, List rstList)数据表记录包含表索引和数值。请对表索引相同的记录进行合并,合并后表记录为相同索引表的数值求和。 @param oriList 原始表记录。 以List方式存放,TableRecord定原创 2015-08-06 10:52:42 · 4478 阅读 · 0 评论 -
整形数组合并(STL vector删除重复元素)
描述题目标题:将两个整型数组按照升序合并,并且过滤掉重复数组元素详细描述:接口说明原型:voidCombineBySort(int* pArray1,intiArray1Num,int* pArray2,intiArray2Num,int* pOutputArray,int* iOutputNum);输入参数: int* pArray1 :整型数组1 intiArray1Nu原创 2015-08-06 10:46:49 · 3673 阅读 · 0 评论 -
c++中的map用法详解
1. map最基本的构造函数;mapmapstring; mapmapint;mapmapstring; mapmapchar;mapmapchar; mapmapint;2. map添加数据;mapmaplive;1. maplive.insert(pair(102,"aclive"));2. maplive.insert(map::value转载 2015-08-06 09:41:00 · 641 阅读 · 0 评论 -
判断某特定值是否存在于vector中
#include <algorithm>vector<int> vec; vec.push_back(1); vec.push_back(2); vec.push_back(3); vec.push_back(4); vec.push_back(5); vector<int>::...原创 2015-08-05 15:34:41 · 33211 阅读 · 2 评论 -
c++中vector容器的用法
vector类称作向量类,它实现了动态数组,用于元素数量变化的对象数组。像数组一样,vector类也用从0开始的下标表示元素的位置;但和数组不同的是,当vector对象创建后,数组的元素个数会随着vector对象元素个数的增大和缩小而自动变化。 vector类常用的函数如下所示: 1.构造函数vector():创建一个空vectorvector(int转载 2015-08-04 10:17:50 · 746 阅读 · 0 评论 -
关于c++中getline(cin,str)在cin之后使用
int main(){ string str; int a; cin>>a; cin.ignore(); getline(cin,str); cout return 0;}getline(cin,str)的读取原理是将以‘/n’为结束符做为一完整读取的一行,'/n'会读。所以当之前用cin读取一个字符的时候,你会原创 2015-08-04 09:32:14 · 4460 阅读 · 1 评论 -
Java中的构造代码块与静态代码块的特点
1、静态代码块的执行:public class StaticTest { static { System.out.println("hello,world!"); System.exit(0); } public static void main(String[] args) { Sys转载 2015-08-02 17:37:21 · 2017 阅读 · 0 评论 -
c++动态数组
首先:为什么需要动态定义数组呢? 这是因为,很多情况下,在预编译过程阶段,数组的长度是不能预先知道的,必须在程序运行时动态的给出 但是问题是,c++要求定义数组时,必须明确给定数组的大小,要不然编译通不过 如: int Array[5];正确 int i=5; int Array[i]; 错误 因为在编译阶段,编译器并不知道 i 的值是转载 2015-08-01 16:56:30 · 693 阅读 · 0 评论 -
求向量中的最大最小值函数
#include#includeusing namespace std;int main(){int n[]={1,4,22,3,8,5};int len=sizeof(n)/sizeof(int);coutcoutreturn 0;}C++ STL 求向量中的最大值和最小值min_element(v.begin(),v.end()) max_ele原创 2015-08-01 16:41:48 · 4683 阅读 · 0 评论 -
Java中的堆内存和栈内存
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器转载 2015-07-31 19:21:49 · 529 阅读 · 0 评论 -
c++中的vector容器
在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结。1 基本操作(1)头文件#include.(2)创建vector对象,vector vec;(3)尾部插入数字:vec.push_back(a);(4)使用下标访问元素,cout(5)使用迭代器访问元素.vectorint>::iterator it;for(it=ve转载 2015-07-30 21:38:12 · 611 阅读 · 0 评论 -
c++中的cin.getline(),cin.get(),getline()
C++中有两个getline函数,这两个函数分别定义在不同的头文件中1、getline()是定义在头文件中,功能是取一行字符串,读到换行符\n结束,并且抛弃换行符,如果需要读取字符,则接着下一行读取。 getline(cin,str);第一个参数是输入流对象,第二个参数是字符串对象,该函数将istream参数作为返回值。如while(getline(cin, line)转载 2015-07-29 15:06:43 · 8434 阅读 · 0 评论 -
vector容器的iterator
vector迭代器除了使用下标来访问vector对象的元素外,标准库还提供了另一种检测元素的方法:使用迭代器(iterator)。迭代器是一种允许程序员检查容器内元素,并实现元素遍历的数据类型。标准库为每一种标准容器(包括vector)定义了一种迭代器类型。迭代器类型提供了比下标操作更一般化的方法:所有的标准库容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作。转载 2015-07-28 14:47:46 · 662 阅读 · 0 评论 -
string类find函数返回值判定
代码示例int main() { string s = "Alice Bob Charlie"; size_t position; position = s.find("none"); if (position >= 0) cout "Found! position is : " position endl;原创 2015-07-28 09:23:59 · 21319 阅读 · 3 评论 -
c++: size_type与 size_t一些概念
size_type: 由string类类型和vector类类型定义的类型,用以保存任意string对象或vector对象的长度,标准库类型将size_type定义为unsigned类型 string抽象意义是字符串, size()的抽象意义是字符串的尺寸, string::size_type抽象意义是尺寸单位类型 string::size_type它在不同的机器转载 2015-07-27 19:13:15 · 900 阅读 · 0 评论 -
Linux下C语言调试(3)
Linux下C程序的编辑,编译和运行以及调试要使用的工具:编辑:vim(vi)编译和运行:gcc调试:gdb安装很简单(以下是以在CentOS中安装为例):1 yum vim gcc gdb 1.使用vim编辑源文件首先,打开终端练下手:1 vim hello.c (进入一般模式)按下"i",进入编转载 2015-07-06 23:20:45 · 827 阅读 · 0 评论 -
Linux下C语言的调试(2)
调试是每个程序员都会面临的问题. 如何提高程序员的调试效率, 更好更快地定位程序中的问题从而加快程序开发的进度, 是大家共同面对的问题. 可能Windows用户顺口就会说出:用VC呗 :-) , 它提供了设置断点, 单步跟踪等的图形界面, 使调试起来直观易用. 但Linux用户可能要生闷气了 O:-) : 难道我们Linux程序员就只能使用原始的调试方法, 在代码中加入printf信息吗?难道Li转载 2015-07-06 22:52:41 · 664 阅读 · 0 评论 -
linux下C语言的调试(1)
编写代码过程中少不了调试。在windows下面,我们有visual studio工具。在linux下面呢,实际上除了gdb工具之外,你没有别的选择。那么,怎么用gdb进行调试呢?我们可以一步一步来试试看。[cpp] view plaincopy#include int iterate(int value) {转载 2015-07-06 22:49:40 · 1212 阅读 · 0 评论