c++
w15971597
这个作者很懒,什么都没留下…
展开
-
mac下写c++
首先mac作为类unix系统必然是自带c编译器的,而且还带了三种,GCC4.2,LLVM-GCC 4.2,LLVM complier(Clang)。笔者的版本如下wzddeMacBook-Pro:c++ wzd$ g++ --versionConfigured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-原创 2016-07-24 23:08:40 · 342 阅读 · 0 评论 -
关于vector对象的insert及初始化
原帖地址http://blog.csdn.net/iicooder/article/details/7220992vector向量容器中使用insert()方法,可以在vector对象的任意位置前插入一个新的元素,书上说,insert()方法要求插入的位置,是元素迭代器的位置,而不是元素的下标,刚开始不太明白什么意思,直到看了一个程序后才知道。#include<vector>#include<io转载 2015-05-04 15:54:32 · 504 阅读 · 0 评论 -
[LeetCode] Isomorphic Strings 同构字符串
Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the characters in s can be replaced to get t. All occurrences of a character must be replaced with anoth原创 2015-10-12 11:03:39 · 194 阅读 · 0 评论 -
[LeetCode]String to Integer (atoi)atof,itoa
好像也不算太难,核心的代码只有几行,但是往往需要我们重点考虑的其实是在各种特殊输入的考虑上。 #include <iostream>#include <cstdio>using namespace std;float atof(const char * arr){ const char * index = arr; float result = 0; int fcoun原创 2015-09-26 20:28:31 · 1068 阅读 · 0 评论 -
二叉树重建
假设一棵二叉树的先序遍历为DBACEGF,中序遍历为ABCDEFG,输出它的后序遍历序列。先序遍历的第一个字符就是根,从中序遍历中找到它,就分开了左右子树,如此可递归下去#include <iostream>#include <cstring>using namespace std;int build(int n, char * s1, char * s2, char * s){ if原创 2015-10-11 17:18:50 · 260 阅读 · 0 评论 -
关于for循环
感觉自己蠢死了,这么多年的程序都白写了! 下午替同学答迅雷笔试题,最后一道编程题是元胞自动机,离交卷还有1个小时我就写完了,他给的测试也过了,然而提交后发现只AC了20%,然后剩下的一个小时全在改,最后也没AC。。。 他给的测试用例里恰好是位于中心的几个点,不牵扯边界,但是我写的时候也考虑边界了啊,为啥错了呢,后来逐步简化,发现原来是我根本不会写for循环!!!for (int i = 0; i原创 2015-09-24 20:30:43 · 228 阅读 · 0 评论 -
[LeetCode]Implement strStr()-字符串匹配
面试滴滴,实现strstr函数,输入父串子串,返回子串第一次出现的位置,否则返回-1;当场搞了一个小时没写出来。。。。 还是基本功不扎实,面试官最后跟我讲,你的简历应该是一部字典,上面的每一个字都应该有把握详细讲给别人听。#include <iostream>// #include <cstring>using namespace std;int strstr(char * str, char原创 2015-09-23 11:06:11 · 206 阅读 · 0 评论 -
数组求和、两个数的最大公约数及最小公倍数
递归的思想就是一层一层扒皮,最后的芯要能结束递归。算法实现int arr_sum(int a[], int length){ if (length == 0) { return 0; } else return arr_sum(a, length - 1) + a[length - 1];}测试用例#include <iost原创 2015-07-25 21:04:36 · 378 阅读 · 0 评论 -
[LeetCode]Largest Number拼接成最大的数字
触宝笔试题 题目意思是给你一组数字,例如: [3, 30, 34, 5, 9]那么所能拼成的最大数字应该是: 9534330搜了下又是LeetCode的题! Given a list of non negative integers, arrange them such that they form the largest number. For example, giv原创 2015-10-23 11:56:44 · 826 阅读 · 0 评论 -
使用Vector实现二维数组
from: XHeartBlue.home.chinaren.com 用vector取代C-style的数组 提起数组,大家想必都很熟悉,你可以用索引和指针来操作数组,给程序设计带来了很大的灵活性。但是你知道它有许多天生的缺陷吗? 首先,数组的越界可能会引起程序的崩溃(如果崩溃了,还算你走运^_^)。其次是动态性不好,包括动态改变大小,动态申请。转载 2015-10-06 22:31:14 · 363 阅读 · 0 评论 -
二叉树的层序遍历
面美团被这道题卡住了,总想着递归再回逆,回头看了下,Ellis的数据结构里就有这个,还是看书不仔细,被刷也是应该应该的。 思路的关键就是用队列来保存节点的左右孩子,然后出列,打印。void level_traversal(Node * root){ queue<Node *> q; q.push(root); // cout << q.size() << endl;原创 2015-10-05 22:17:44 · 231 阅读 · 0 评论 -
二分查找递归非递归实现
以往的评估说明有80%的编程初学者不能在第一次就写出正确的折半搜索算法 –Larry Nyhoff的数据结构与算法分析第一章Nyhoff的书中还详细给出了易犯得错误,并给出了详细的测试。递归版本int bi_search(int a[], int left, int right, int find_num){ if (left <= right) { int原创 2015-09-23 17:16:07 · 258 阅读 · 0 评论 -
已排序数组中,找出给定数字出现的次数
微软的面试题。。。感觉好高大上的样子 我想的比较简单粗暴l = [2, 3, 6, 6, 6, 9]count = 0for x in l: if x == 6: count += 1print(count)当然对于已排序的数组,无疑二分查找更高效#include <iostream>#include <vector>#include <cstring>#inc原创 2015-09-24 11:03:35 · 357 阅读 · 0 评论 -
[LeetCode]candy
There are N children standing in a line. Each child is assigned a rating value.You are giving candies to these children subjected to the following requirements:Each child must have at least one candy.原创 2015-10-12 20:32:06 · 228 阅读 · 0 评论 -
为什么C/C++不能返回数组?
char* aa(){ char p[] = "sdf"; return p;}int main(int argc, char const *argv[]){ char* n = aa(); cout << n << endl;}int aa(){ int i = 3; return p;}int main(int argc, char c原创 2016-06-04 11:40:51 · 1031 阅读 · 0 评论 -
数据类型对应字节数
在深入理解计算机系统这本书上面提到了在32位机器和64机器中int类型都占用4个字节。就顺便试了下其他的数据类型。 32位结果如下: 需要说明一下的是指针类型存储的是所指向变量的地址,所以32位机器需要32bit,而64位机器需要64bit。64位编译器: 类型 字节数 char 1个字节 char*(即指针变量) 8个字节 short int 2个字节 int原创 2015-09-07 13:55:22 · 318 阅读 · 0 评论 -
strcpy的实现
char *strcpy(char *Dst, const char *Src){ assert((Dst != NULL) && (Src != NULL)); char *temp = Dst; while((*temp++ = *Src++) != '\0') ; return Dst;}几个重要的地方。 1. 返回类型应为char*,主原创 2015-10-15 15:47:17 · 213 阅读 · 0 评论 -
strlen的实现
strlen是个很简单的函数,就是返回字符串中字符的个数。 开始我是这么写的int my_strlen(const char * str){ int len = 0; while(*str++ != '\0') len++; return len;}在网上找了下,毛病挺多,改进如下size_t my_strlen(const char * str){原创 2015-10-15 14:56:28 · 433 阅读 · 0 评论 -
二叉树的建立
在LeetCode上刷题不需要自己写输入输出,只需要写出函数的关键部分就行了,但是ACM及很多OJ都是需要编写完整的程序的,尤其是自己调试的时候,二叉树都需要自己生成,开始我都是用的笨方法,挨个节点连接起来, pNode a, b, c, d, e, f, g, h, i, j, k, l; l = new Node(13, NULL, NULL); k = new Node(1原创 2015-10-14 16:57:44 · 225 阅读 · 0 评论 -
sizeof
strlen是函数,执行计数,碰到’\0’结束,然后返回计数器的值; sizeof是关键字,它以字节的形式给出了其操作数的存储大小,返回结果是size_t,实际就是unsigned int。很有意思,strlen在遇到’\0’后直接结束,所以l1是0,而单个0strlen结果是1,双反即单反的strlen结果是1,如果直接strlen(“\”)呢,编译不过。 而sizeof的所有结果都是2!原创 2015-09-15 21:57:21 · 222 阅读 · 0 评论 -
元胞自动机
即生命游戏,今天下午迅雷的笔试编程题。 简单的版本,给定当前的状态,给出下一个时刻的状态。 status函数获取某点当时周围的活的细胞数量, 代码写的比较渣#include <iostream>#include <vector>#include <stdio.h>using namespace std;#define MAX 10010int status(vector<vector<c原创 2015-09-24 20:49:27 · 396 阅读 · 0 评论 -
std::endl crashes , compiled using MinGW 升级到MinGW4.8.1后编译程序崩溃
之前用的4.5 的版本,不支持c++11,就想升级一下,从官网下的,没像到配置好环境变量后编译完的程序一运行总是崩溃,我用的编辑器是Sublime Text 3,折腾了一下午之后终于定位到endl,没有它就一切正常,百度好搜了半天都没结果,最后还是谷歌大法好,第一条就指向了stackoverflow!让我想起来上次找PCM库也是到处百度无果,最终还是stackoverflow给了解答。 这次几位答原创 2015-10-27 17:28:21 · 226 阅读 · 0 评论 -
字符串常量放在静态存储区
转载,原文地址http://blog.csdn.net/n567656756765676567/article/details/6908929char *c="chenxi";书上说: “chenxi”这个字符串被当作常量而且被放置在此程序的内存静态区。 那一般的int i=1; 1也是常量,为什么1就不被放置在此程序的内存静态区了呢? 请高手指点!所有的字符窜常量都被放在静态内存区 因为字转载 2015-10-14 10:46:35 · 623 阅读 · 0 评论 -
返回局部变量
征途的一道笔试题#include <iostream>#include <vector>#include <cstdio>#include <cstdlib>#include <cmath>#include <ctime>#include <numeric>using namespace std;char *G(){ char p[] = "sw"; return p原创 2015-10-14 10:05:58 · 268 阅读 · 0 评论 -
常量const
const设计用来代替#define,因为宏只是做文本代替,并不能进行类型检查。 const的复杂情况在于指针,它要从里向外读,const修饰最靠近它的那个。1.const int * u;int const * u;这两个定义是一个效果,都是u所指向的值不能变,即(*u)不变。一般我们使用第一种写法,但我觉得第二种写法更容易区分,因为所修饰的内容就在const的右边。 2.int d = 1原创 2015-09-07 10:49:21 · 228 阅读 · 0 评论 -
位运算与逻辑运算
一直没搞明白这个,今天好好捋了捋 逻辑运算是&&、||这些,而位运算是&、|、^这些。&& 逻辑与,这个好理解,必须两边全为真的时候整个表达式才为真,所以它还具有了短路功能,即只要左边为假则不必计算右边的值了|| 逻辑或,有一个为真整个表达式就为真。& 按位与,即都为1结果才为1, 2(010)&7(111)的结果为2(010)| 按位或,只要有1就为1^ 异或,我的理解就是原创 2015-09-23 16:00:08 · 678 阅读 · 0 评论 -
指针与字符串
#include <iostream>using namespace std;int main(int argc, char const *argv[]){ const char str1[] = "abc"; const char str2[] = "abc"; const char *p1 = "abc"; const char *p2 = "abc";原创 2015-08-14 20:45:02 · 196 阅读 · 0 评论 -
关于大块注释
码代码的时候遇到需要大块代码要注释的时候,在开头结尾打/**/感觉很不方便,就找了一下注释的方法1.先按Ctrl+k,再按Ctrl+c即可将整段代码注释,如需取消注释,先按Ctrl+k,再按Ctrl+u即可。这是VS自带的快捷键2.如果安装了visual assit x,当然我相信用vs的不可能不装它,只需按/即可,取消就再按下/以上方法结果均如下图//这是注释头///原创 2015-03-19 13:15:49 · 444 阅读 · 0 评论 -
实现一个简单的vector
我的确认为99.99%的程序员所写的程序,在SGI STL面前都是三流水准—-侯捷 当然,我还没有剖析STL源码的能力,我照葫芦画瓢写一个简单的vector实现#include <iostream>using namespace std;template <typename Object>class Vector{public: explicit Vector(int ini原创 2015-08-08 21:51:45 · 245 阅读 · 0 评论 -
利用迭代器逆向输出vector
反向迭代器reverse_iterator,从rbegin(=end)到rend(=begin-1)反向遍历,仍然通过++ 以下是三种利用迭代器逆向输出vector中内容的方式:#include <iostream>#include <vector>using namespace std;int main(){ vector<int> vec; int i; cin原创 2015-05-05 22:31:12 · 574 阅读 · 0 评论 -
const
const after a function declaration means that the function is not allowed to change any class members (except ones that are markedmutable). So this use of const only makes sense, and is hence only a原创 2015-03-27 14:03:31 · 240 阅读 · 0 评论 -
c++文件读写
转一篇c++文件读写的博文备忘,原文地址http://www.cnblogs.com/me115/archive/2010/09/20/1831555.html掌握文本文件读写的方法了解二进制文件的读写方法C++文件流:fstream // 文件流ifstream // 输入文件流ofstream // 输出文件流//创建一个文本文件并写入信息//同向屏幕上输出信息一样将信息输出至文转载 2015-04-20 11:46:51 · 203 阅读 · 0 评论 -
c++文件读写2
转一篇关于c++文件读写的博文备忘,原文地址http://blog.csdn.net/shtianhai/article/details/2363841在C++中如何实现文件的读写?作者: infobillows 发表日期: 2007-04-03 21:33 点击数: 465一、ASCII 输出为了使用下面的方法, 你必须包含头文件<fstream.h>(译者注:在标准C++中,已经使用转载 2015-04-20 11:46:10 · 228 阅读 · 0 评论 -
欢迎使用CSDN-markdown编辑器
C++原创 2015-03-12 13:08:58 · 228 阅读 · 0 评论 -
为何使用内联函数?
关于内联函数的使用以前一直未了解,今天翻阅prime的时候恰好翻到那一节,原来书中讲的很清楚,比如一个返回两个string形参中较短的字符串的函数:const string &shorterString(const string &s1, const string &s2){ return s1.size() < s2.size() ? s1 : s2;}将其定义成函数的好处是便于代码原创 2015-03-12 16:41:17 · 348 阅读 · 0 评论 -
关于返回值传递
一、缺省情况下,函数的返回值是按值传递的这意味着得到控制权的函数将接收返回语句中指定的表达式的拷贝,例如: Matrix grow( Matrix* p ) { Matrix val; // ... return val; } grow()把存储在 val 中的值的拷贝返回到调用函数,但调用函数不能用任转载 2015-03-16 16:17:23 · 647 阅读 · 0 评论 -
关于参数传递
包括C 和Java在内的许多编程语言都是使用按值调用来传递参数的,即将实参复制给形参。但是在C++中,参数有可能是大的复杂对象,导致复制的效率很低。另外,有时候又需要改变被传递的值。对此,C++有三种不同的方式来传递参数。有一个简单的规则可以确定具体采用哪种方式。下面的函数声明阐述了这三种参数传递机制,该函数返回arr中前N个整数的平均值,并且如果N大于arr.size()或者小于1,就设原创 2015-03-23 14:52:21 · 256 阅读 · 0 评论 -
动态数组与静态数组
使用数组,一直习惯#include <iostream>#define MAX 500010using namespace std;int main(int argc, char const *argv[]){ int arr[MAX] = {0}; int N = 0; cin >> N; for (int i = 0; i < N; ++i) {原创 2015-08-16 16:41:06 · 534 阅读 · 0 评论 -
new,delete & malloc,free
C语言提供了动态内存分配(dynamic memory allocation)函数malloc和free及malloc的变体alloca.calloc,realloc等。其中alloca是向栈申请内存,因此无需释放。malloc从堆中申请内存,并且没有初始化内存的内容,里面存的是垃圾数,因此我们一般用memset来初始化这部分的内存空间。calloc则将初始化这部分的内存,设置为0,而realloc原创 2015-08-17 22:06:10 · 200 阅读 · 0 评论 -
随机数
搞搞随机数,对测试数据有很大帮助。 在stdlib里有一个rand(),它生成一个闭区间[0, RAND_MAX]的随机整数,RAND_MAX的值为32767,不同的环境下可能不同,cout一下试试就行。 不过需要注意的是,我们每次在同一个程序多次调用会产生不同的值,但是多次运行同一个程序会发现那些值没变!,你第一次产生了三个随机数如23, 4523, 2354,下一次运行程序发现产生的随机数还原创 2015-10-02 21:44:50 · 203 阅读 · 0 评论