由买买提看人间百态

topics

全部话题 - 话题: 返回值
1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)
t**g
发帖数: 1164
1
来自主题: Programming版 - 请教大虾们一个C++返回值问题
我想写一个函数f
返回值是N维空间的点坐标
比如有时返回3个一维空间的点坐标(所以每个点包含一个坐标值)
有时返回2个二维空间的点坐标(所以每个点包含2个坐标值)
我想设置这个函数返回值是一个指向array的指针p
(比如返回一个指向二维array的指针,这个array包含点坐标)
可是好像不太行得通
因为p可以指向二维array,也可以指向3维
而且array的size必须事先确定
可是size要到运行时才知道
所以有什么好的建议么?
thx
c******t
发帖数: 391
2
在多次面试的online coding里都遇到这种情况,当实现一个返回值为int的搜索函数时
,有时会在if语句里判断是否符合搜索条件,如果符合即返回。但问题是,函数的
default返回值该怎样设,如果是搜索对象是数组下标,当然可以返回-1。但如果让返
回搜索的元素,该怎样解决呢?
举个例子,下面是一个用hashMap找数组里出现奇数次元素的代码(没测试):
public int findOdd(int[] arr){
HashMap map = new HashMap();
for(int i = 0; i if(map.get(arr[i])==null)
map.put(arr[i],1);
else{
map.put(arr[i],map.get(arr[i])+1);
}
}
for(Map.Entry item... 阅读全帖
z****e
发帖数: 2024
3
我还不是太懂你的意思。
我也知道b的静态类型是Base*,但是这个和虚函数返回类型有什么联系呢?
难道,虚函数返回值的类型,不是决定于虚函数本身的签名么?
而是决定于调用该虚函数的指针的类型吗?
既然已经找到了derived的虚指针,查虚表,发现要返回一个derived*,就返回,这难道
有问题?
vptr并没有因为b的静态类型是Base*,而改变vptr本身的行为啊?
a****n
发帖数: 1887
4
不同的编译器支持不一样, VC就不支持基于返回值重载
你把derived 的clone 返回值改成 base* 就行了
Y**G
发帖数: 1089
5
x86上return xxx就是将xxx放到寄存器EAX。调用者看EAX来获得函数的返回值。
如果没有return语句等于执行隐含的return语句,返回值无定义,是垃圾。
k*******3
发帖数: 1909
6
来自主题: Programming版 - 请问C++返回值和返回引用区别
为啥前置++和后置++一个返回值一个返回引用呢?
S**********e
发帖数: 503
7
"找数组里出现奇数次元素的代码"
不是应该返回一个数组或集合吗?出现奇数次元素可能不只一个。貌似函数的返回值定
义不恰当。要么抛出异常,如果找不到。
C*******l
发帖数: 105
8
来自主题: Programming版 - 关于函数返回值的问题
C++中有些code把函数返回值定义成const,这样做的好处是什么?我的理解是函数返
回值已经是rvalue了,已经不能改变了,但为什么还要在函数定义时写上const,这是
不是多此一举?
d******i
发帖数: 7160
9
至少vc对以下的烂函数很宽容,只是个编译期warning - "not all control paths
return a value"
int yy=0;
int test_func()
{
if(yy>0)
return 1;
}
而且奇怪的是它能正常运行,无疾而终。
int dd=test_func();
接受返回值的dd还是默认值,没受影响。
不理解啊。
求指点。谢谢!
z****e
发帖数: 2024
10
"Now it is same as non virtual function overriding."
你这个又不太严格了啊。
convariant只有pointer和reference作返回值。
g***l
发帖数: 2753
11
像什么 pthread_mutex_wait()/post().
timer_start()/stop()..
我有时就加个自己定义的assert(), 并且在release版本中就都忽略了。
今年跟俺们这的一个架构师讨论一个问题,看看很多年以前别人的代码,架构师说这些
system Call也应检查返回值的。
b*******s
发帖数: 5216
12
除了内联,还有返回值优化
d****n
发帖数: 1241
13
返回值优化(RVO)通常指带的是在C++编译器里的一种优化吧?在C编译器里好像没有类
似的优化.
K*******i
发帖数: 399
14
某本数据结构英文教材上说Top方法是accessor, 返回值的时候栈中还有这个值,因此
可以返回const引用。Pop方法可以没有返回值,但带返回值的Pop方法不允许返回引用
,因为Pop后这个值逻辑上在栈中被删除了。
假如Top和Pop方法的原型是
template
const T& Top() const;
void Pop();
问题是Top方法返回引用也有问题:
如果调用者这样写
T t = S.Top();
这个问题不大,因为是赋值给t
但如果调用者这样写
const T& t = S.Top();
S.Pop();
这样一来,再使用t不就有问题了么?
P*****i
发帖数: 63
15
按照SAS手册定义,substr返回值不应该是一个子字符串,长度就是该子字符的长度吗?
SYNTAX
The SUBSTR function has three arguments:
SUBSTR(SOURCE, POSITION, N)
The function returns N characters, beginning at character number
POSITION from the string SOURCE.
SOURCE—This is the larger or reference string. It can be a
variable or a string of characters.
POSITION—This value is a positive integer and references the
starting point to begin reading the internal group of characters.
N—This value is a positive integer and references the number... 阅读全帖
s**l
发帖数: 46
16
不是学计算机的,是搞生物的,但是现在要用一些计算机的东西
有一个函数ZL(int t), 不同的t能返回不同的值,现在知道t取值从a到b, 怎么样才
能最快的找到其中那一个t能让ZL函数返回值最小。 ZL函数不是单调的。
k*******3
发帖数: 1909
17
来自主题: Programming版 - 请问C++返回值和返回引用区别
essential C++ 中文版4.6节“打造一个iterator class”中分别定义了++的前置和后
置版
本,请问为啥一个返回Triangular_iterator&,而一个返回Triangular_iterator类呢?
谢谢。
inline Triangular_iterator& Triangular_iterator::
operator++()
{ // prefix instance
++_index;
check_integrity();
return *this;
}
inline Triangular_iterator Triangular_iterator::
operator++( int )
{ // postfix instance

Triangular_iterator tmp = *this;
++_index;
check_integrity();
return tmp;
}
p**o
发帖数: 3409
18
手写了一些C扩展,有些返回多重指针的函数不知道怎么用SWIG来包来供Python调用……
比如下面这个strsplit()函数,返回的是char**,怎么改才能让Python收到一个list (
of strings)?
http://www.swig.org/tutorial.html
我只是照tutorial简单地把函数声明抄进.i文件,Python中调用时返回的是

#include
#include
#include
/* Split an input string 'instr', using a set of given delimiters, to an
array of strings of at most 'maxparts' parts. */
char **strsplit (const char *instr, const char *delimiters, size_t maxparts)
{
char *... 阅读全帖
b***i
发帖数: 3043
19
是java,如果原来的代码是c++, 就是我写的那样,可以用引用或者指针获得地址,从而
给变量赋值。现在要转换成java,如何写呢?
C++程序如下
我有一个类叫storage,其中有个数组double ok[100];
还有个方法acquirereference(int a)想返回ok[a]的引用,比如我在主程序中
storage m;
double& storage::acquirereference(int a)
{
return ok[a];
}
double& myvalue=m.acquirereference(10);// here to get &ok[10] as in c++
myvalue=5;可以让ok[10]获得5。
应该怎样写java的方法acquirereference的返回值类型和return 的参数呢?
A*******i
发帖数: 75
20
例如用命令 grep 'abc' *.* | wc -l
想把wc的结果存到一个变量中
试着用grep 'abc' *.* | wc -l | read var1
但是var1里面没有值,现在暂时办法就是先把值存到一个临时文件里面,然后再读文件
里面的值。
在tcsh里面用set就可以做到,可是bash中好像不行,请问有直接的方法吗?谢谢
p**i
发帖数: 688
21
have you tried
var1=`grep 'abc' *.* | wc -l`
echo $var1

例如用命令 grep 'abc' *.* | wc -l
想把wc的结果存到一个变量中
试着用grep 'abc' *.* | wc -l | read var1
但是var1里面没有值,现在暂时办法就是先把值存到一个临时文件里面,然后再读文件
里面的值。
在tcsh里面用set就可以做到,可是bash中好像不行,请问有直接的方法吗?谢谢
s**l
发帖数: 46
22
对,我也是这样想的
实际上ZL函数是一个预测算法,其返回值是预测误差.这个误差和ZL的输入参数t关系
特别大.现在就是想找一个合适的t使得ZL输出误差小于某一个设定值.只知道 t的取
值范围,所以不知道怎么搞.
h****n
发帖数: 2094
23
返回null
c******t
发帖数: 391
24
多谢回复!
但返回null会报错啊(Type mismatch: cannot convert from null to int),除非cast
成(int)null,感觉很奇怪。。。
X****r
发帖数: 3557
25
没有本质上的区别,但在大部分情况下我个人倾向于使用指针,有两个原因:
1.这个参数将会被改变这个事实在调用的地点看起来更清楚。特别是多人合作开发的项
目里代码好多都是贴来贴去的,不是每人都会看一下所有用到的函数的文档的。
2.有时候调用者不关心这个参数的返回值,这样可以传一个空指针。
当然也有时候用引用更恰当或更符合周围代码的风格的。
X****r
发帖数: 3557
26
b->clone()返回Base*,你要赋给Derived*,自然报错,
用dynamic_cast
X****r
发帖数: 3557
27
b的静态类型是Base*,b->clone()所返回的静态类型就是Base*,
虽然在你这里它的动态类型是Derived*。
所以不能直接赋值给Derived*变量而要用dynamic_cast。
X****r
发帖数: 3557
28
你说什么呢。现在是编译错误,和什么vptr都没关系。Base::clone()
声明的返回类型是Base*,所以b->clone()这个表达式的类型就是Base*。
c*********l
发帖数: 3438
29
【 以下文字转载自 CS 讨论区 】
发信人: amrita (Amrita), 信区: CS
标 题: [分享]:一篇文章讲通一半Java《面向对象一家人》
发信站: BBS 未名空间站 (Thu Oct 24 04:15:04 2013, 美东)
原文链接:http://ladder.azurewebsites.net/forum.php?mod=viewthread&tid=121&extra=page%3D1
第一集:Mr.Method
Hi,大家好~~我是Mr.Method,和Mr. Okay是好哥们儿。
在所有面向对象的语言里你都能见到我的身影。不信?你们学编程的时候第一个程序
都是Hello World吧?那就是依靠对我的调用实现的——无论是哪个平台、哪种语言,
你一定调用了在命令行里输出字符串的某个Method。
铁三角
在正式介绍我自己之前,还是先说说我的哥哥和妹妹吧,我们的家庭背景有助于大家
对我有一个更好的了解。我的哥哥(Mr. Class)和小妹(Mr. Field)加上我,我们仨
可是面向对象家庭里绝对的主角、“铁三角”。我们三个之所以称为“铁三角”是因为
... 阅读全帖
a****a
发帖数: 67
30
原文链接:http://ladder.azurewebsites.net/forum.php?mod=viewthread&tid=121&extra=page%3D1
第一集:Mr.Method
Hi,大家好~~我是Mr.Method,和Mr. Okay是好哥们儿。
在所有面向对象的语言里你都能见到我的身影。不信?你们学编程的时候第一个程序
都是Hello World吧?那就是依靠对我的调用实现的——无论是哪个平台、哪种语言,
你一定调用了在命令行里输出字符串的某个Method。
铁三角
在正式介绍我自己之前,还是先说说我的哥哥和妹妹吧,我们的家庭背景有助于大家
对我有一个更好的了解。我的哥哥(Mr. Class)和小妹(Mr. Field)加上我,我们仨
可是面向对象家庭里绝对的主角、“铁三角”。我们三个之所以称为“铁三角”是因为
我们各司其职、配合的非常默契。Mr.Class,他是个很好的组织者,他能把从现实世界
抽象出来的结果良好地组织在一起(这个叫“封装”)——我(Mr.Method)和我小妹
(Ms. Field)被我哥管着(注:被封装在类里)。小妹负责表示我们这个小组织当... 阅读全帖
a****a
发帖数: 67
31
原文链接:http://ladder.azurewebsites.net/forum.php?mod=viewthread&tid=121&extra=page%3D1
第一集:Mr.Method
Hi,大家好~~我是Mr.Method,和Mr. Okay是好哥们儿。
在所有面向对象的语言里你都能见到我的身影。不信?你们学编程的时候第一个程序
都是Hello World吧?那就是依靠对我的调用实现的——无论是哪个平台、哪种语言,
你一定调用了在命令行里输出字符串的某个Method。
铁三角
在正式介绍我自己之前,还是先说说我的哥哥和妹妹吧,我们的家庭背景有助于大家
对我有一个更好的了解。我的哥哥(Mr. Class)和小妹(Mr. Field)加上我,我们仨
可是面向对象家庭里绝对的主角、“铁三角”。我们三个之所以称为“铁三角”是因为
我们各司其职、配合的非常默契。Mr.Class,他是个很好的组织者,他能把从现实世界
抽象出来的结果良好地组织在一起(这个叫“封装”)——我(Mr.Method)和我小妹
(Ms. Field)被我哥管着(注:被封装在类里)。小妹负责表示我们这个小组织当... 阅读全帖
a****a
发帖数: 67
32
原文连接:http://ladder.azurewebsites.net/forum.php?mod=viewthread&tid=121&extra=page%3D1
第一集:Mr.Method
Hi,大家好~~我是Mr.Method,和Mr. Okay是好哥们儿。
在所有面向对象的语言里你都能见到我的身影。不信?你们学编程的时候第一个程序
都是Hello World吧?那就是依靠对我的调用实现的——无论是哪个平台、哪种语言,
你一定调用了在命令行里输出字符串的某个Method。
铁三角
在正式介绍我自己之前,还是先说说我的哥哥和妹妹吧,我们的家庭背景有助于大家
对我有一个更好的了解。我的哥哥(Mr. Class)和小妹(Mr. Field)加上我,我们仨
可是面向对象家庭里绝对的主角、“铁三角”。我们三个之所以称为“铁三角”是因为
我们各司其职、配合的非常默契。Mr.Class,他是个很好的组织者,他能把从现实世界
抽象出来的结果良好地组织在一起(这个叫“封装”)——我(Mr.Method)和我小妹
(Ms. Field)被我哥管着(注:被封装在类里)。小妹负责表示我们这个小组织当... 阅读全帖
a****a
发帖数: 67
33
原文:http://ladder.azurewebsites.net/forum.php?mod=viewthread&tid=121&extra=page%3D1
第一集:Mr.Method
Hi,大家好~~我是Mr.Method,和Mr. Okay是好哥们儿。
在所有面向对象的语言里你都能见到我的身影。不信?你们学编程的时候第一个程序
都是Hello World吧?那就是依靠对我的调用实现的——无论是哪个平台、哪种语言,
你一定调用了在命令行里输出字符串的某个Method。
铁三角
在正式介绍我自己之前,还是先说说我的哥哥和妹妹吧,我们的家庭背景有助于大家
对我有一个更好的了解。我的哥哥(Mr. Class)和小妹(Mr. Field)加上我,我们仨
可是面向对象家庭里绝对的主角、“铁三角”。我们三个之所以称为“铁三角”是因为
我们各司其职、配合的非常默契。Mr.Class,他是个很好的组织者,他能把从现实世界
抽象出来的结果良好地组织在一起(这个叫“封装”)——我(Mr.Method)和我小妹
(Ms. Field)被我哥管着(注:被封装在类里)。小妹负责表示我们这个小组织当前
... 阅读全帖
S**I
发帖数: 15689
34
来自主题: JobHunting版 - [合集] 问个google面试题
☆─────────────────────────────────────☆
Bayesian1 (Jason) 于 (Tue Jun 21 01:52:31 2011, 美东) 提到:
Given a binary tree, find 2 leaf nodes say X and Y such that F(X,Y) is
maximum where F(X,Y) = sum of nodes in the path from root to X + sum of
nodes in the path from root to Y - sum of nodes in the common path from root
to first common ancestor of the Nodes X and Y
☆─────────────────────────────────────☆
SecretVest (Secret Vest) 于 (Tue Jun 21 04:01:30 2011, 美东) 提到:
not hard if someone is used... 阅读全帖
l**n
发帖数: 7272
35
来自主题: Apple版 - Unix的缺陷(ZT)
虽然这里的码工比较少,但是能appreciate coding和programming的朋友也可以看看。
我觉得挺有意思的。
http://blog.sina.com.cn/s/blog_5d90e82f01014k5j.html
我想通过这篇文章解释一下我对 Unix 哲学本质的理解。我虽然指出 Unix 的一个设计
问题,但目的并不是打击人们对 Unix 的兴趣。虽然 Unix 在基础概念上有一个挺严重
的问题,但是经过多年的发展之后,这个问题恐怕已经被各种别的因素所弥补(比如大
量的人力)。但是如果开始正视这个问题,我们也许就可以缓慢的改善系统的结构,从
而使得它用起来更加高效,方便和安全,那又未尝不可。同时也希望这里对 Unix 命令
本质的阐述能帮助人迅速的掌握 Unix,灵活的应用它的潜力,避免它的缺点。
通常所说的“Unix哲学”包括以下三条原则[Mcllroy]:
一个程序只做一件事情,并且把它做好。
程序之间能够协同工作。
程序处理文本流,因为它是一个通用的接口。
这三条原则当中,前两条其实早于 Unix 就已经存在,它们描述的其实是程序设计最... 阅读全帖
c**y
发帖数: 73
36
来自主题: JobHunting版 - 新鲜夫家onsite面经
1. 大数乘法
给定两个非常大的数,写出一个函数返回它们的乘积。可以自己定义需要用到的数据结
构来表示每个数。我用了vector。
2. 系统设计的问题。
给定一个数据中心,如何收集statistics在给定的时间范围(t0,t1)。
这是系统设计题,没啥代表性。
3. 给定一个点,找出一百万个点中距离这个点最近的k个点。
用heap来存当前最近的k个点,然后scan这一百万个点一遍。
4. 给定一个函数fetch10k(),要求实现另外一个函数fetch()。这个题的说明比较复杂
,最后没有写完。具体说明如下。
fetch10k()是给定的,signature如下。
int fetch10k(char *buffer)
这个函数干的事情是从底层读出数据,写到传入的buffer中。这个buffer是一个默认
10k bytes大小的空buffer。返回类型int,返回写入后buffer中数据的size。
注意返回的数据大小和底层的数据大小有关。如果底层数据size是0,那么返回也是0,
因为buffer里什么也没有写。
如果底层数据是小于10k,例如5k,那么返回值是5k,因为只有5k... 阅读全帖
s******g
发帖数: 755
37
【 以下文字转载自 Apple 讨论区 】
发信人: faucetQ (fq), 信区: Apple
标 题: [Mac Dev]整了个ObjectiveC的笔记,看看气氛对得上不
发信站: BBS 未名空间站 (Mon Feb 2 21:38:18 2009), 转信
整了个类似ObjectiveC学习笔记的东西,发上来大伙看看有兴趣不。
修改了一点,增加了NSAutoreleasePool的内容。
增加了NSString内容。
===========俺系分隔线==================
本文假设读者有基本的C编程能力,如果有C++或者Java的背景会更容易理解但是不是必须。
ObjectiveC基本语法
消息
在objectiveC中,向一个对象发送一个消息的语法为
[ obj method:parameter];
类似的功能在C++中写作
obj->method(parameter);
在java中写作
obj.method(parameter);
在smalltalk中写作
obj method:parameter
显而易见objectiveC和smalltalk... 阅读全帖
f*****Q
发帖数: 1912
38
整了个类似ObjectiveC学习笔记的东西,发上来大伙看看有兴趣不。
修改了一点,增加了NSAutoreleasePool的内容。
增加了NSString内容。
===========俺系分隔线==================
本文假设读者有基本的C编程能力,如果有C++或者Java的背景会更容易理解但是不是必须。
ObjectiveC基本语法
消息
在objectiveC中,向一个对象发送一个消息的语法为
[ obj method:parameter];
类似的功能在C++中写作
obj->method(parameter);
在java中写作
obj.method(parameter);
在smalltalk中写作
obj method:parameter
显而易见objectiveC和smalltalk的语法基本是相同的。
当有两个或者两个以上的参数时,通常试用以的语法
[ obj method:parameter1 WithSecondParameter:parameter2];
定义一个类的代码放在一个.h文件中,下面是一个例子。
//macdevexample1.h
... 阅读全帖
d**s
发帖数: 98
39
非常规的解法:
http://blog.csdn.net/anchor89/article/details/6055412
经典面试题:设计包含min函数的栈,O(1)空间实现方法
分类: 数据结构和算法 2010-12-04 22:20 2102人阅读 评论(10) 收藏 举报
题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数
min、push以及pop的时间复杂度都是O(1)。
注:这是06年一道Google的面试题.
先来说个常规解和他的一个优化,常规解的时间复杂度符合要求,但需要线性的额外空间.
常规解(参考 http://zhedahht.blog.163.com/blog/static/25411174200712895228171/):
除了题目要求的栈之外新开一个栈,用来记录最小值,每当在原栈中push数据后,与最小
值栈中的栈顶元素比较,如果新值较小,则在最小值栈中push新值;否则再次push栈顶元
素.
pop的时候,只要将最小值栈也pop一下就行了.
这样,min函数只需要返回最小值栈的栈顶元素即可.
常规解空间上的一个优化:
一般... 阅读全帖
B**********2
发帖数: 923
40
来自主题: JobHunting版 - Quantcast悲剧面经
首先感谢microleo,给我推荐
电话两轮,一个聊天,一个简单的电面。
Coding Test 一轮,题目为Spread Sheet,大家可以自行Google
得到Positive Feedback
5月8号 On site
分别两个工程师两个项目经理
鉴于每个人多聊了一会我以前的Project,所以每个人问1到3个问题不等。
----------------- 割割割割割割割割 -----------------------------
Q: Spread Sheet 如果太大,不能整个Load进内存来处理。但是可以有多个
机器按照一定的信息读本机文件。假设Spread Sheet每个连通片的计算量
一个机器能够处理
A: Virtually的建立无向连通图,用DFS获得连通片,每个连通片交给一个主机来计算
----------------- 割割割割割割割割 -----------------------------
Q: 给一个森林和已知两个节点,求最近公共祖先,如果没有,返回NULL
A: 我说啥语言没有什么区别,先上伪码,MIT Press Algorithm ... 阅读全帖
d******e
发帖数: 2265
41
来自主题: Programming版 - 感觉python的前途堪忧 (转载)
转帖:
克里斯可以说是天才少年和好学生的代名词,他在2000年本科毕业之后,继续攻读计算
机硕士和博士。但克里斯并不是宅男,学习之余他手捧「龙书」游历世界,成为德智体
美劳全面发展的好学生。之后就是一篇又一篇的发表论文,硕士毕业论文即提出了一套
完整的运行时编译思想,奠定了 LLVM 的发展基础,读博期间 LLVM 编译框架在他的领
导下得到了长足的发展,已经可以基于 GCC 前端编译器的语义分析结果进行编译优化
和代码生成,所以克里斯在2005年毕业的时候已经是业界知名的编译器专家了。
注:很多计算机专业的大学生经常问我在大学里学点什么好,看看克里斯就行了。以目
前的科技信息开放程度,如果你在自己感兴趣的领域里用心耕耘,再加上那么一点点天
分,毕业时成为某一个专有领域的专家应该不是问题。那时就不是你满世界去找工作了
,而是工作满世界来找你!
克里斯毕业的时候正是苹果为了编译器焦头烂额的时候,因为苹果之前的软件产品都依
赖于整条 GCC 编译链,而开源界的这帮大爷并不买苹果的帐,他们不愿意专门为了苹
果公司的要求优化和改进 GCC 代码,所以苹果一怒之下将编译器后端直接替换为 LLVM... 阅读全帖
m*****k
发帖数: 731
42
来自主题: JobHunting版 - Yelp 面经
是这个八
http://blog.csdn.net/wuzhekai1985/article/details/6597351
eg4.12:有一个长度为N的链表,N未知。希望你只遍历一次链表,就从链表中等概率
的挑出K个数。 -- TopLanguage
某博客的解法,非常好 http://blog.csdn.net/potty15/article/details/6221715
a:首先挑出前k个数,保存在pick[1...k]中,然后从第k+1个开始遍历
for i = k+1 to N do //这里N不知道,但是可以用链表->next == null 来判断是否到
达链表末尾。
r = random(1, i);
if (1 <= r <= k);
pick[r] = i;
简单数学证明如下:
归纳法,算法刚开始,对于前k个数被选中的概率都为1,,不失一般性,选择其中的第
j个来讨论,
i = k+1轮:
random(1, i)返回值为j的概率为1/k+1,所以j保留下来的概率为k/k+1
i = k+2轮:
random(1, i)... 阅读全帖
m*****k
发帖数: 731
43
来自主题: JobHunting版 - Yelp 面经
是这个八
http://blog.csdn.net/wuzhekai1985/article/details/6597351
eg4.12:有一个长度为N的链表,N未知。希望你只遍历一次链表,就从链表中等概率
的挑出K个数。 -- TopLanguage
某博客的解法,非常好 http://blog.csdn.net/potty15/article/details/6221715
a:首先挑出前k个数,保存在pick[1...k]中,然后从第k+1个开始遍历
for i = k+1 to N do //这里N不知道,但是可以用链表->next == null 来判断是否到
达链表末尾。
r = random(1, i);
if (1 <= r <= k);
pick[r] = i;
简单数学证明如下:
归纳法,算法刚开始,对于前k个数被选中的概率都为1,,不失一般性,选择其中的第
j个来讨论,
i = k+1轮:
random(1, i)返回值为j的概率为1/k+1,所以j保留下来的概率为k/k+1
i = k+2轮:
random(1, i)... 阅读全帖
b***i
发帖数: 3043
44
Exception不是给你处理编程错误的。指针非法操作是编程错误,最终会在发行版消失
的,或者变少。而exception是预计要发生的异常。Exception的目的是,在出问题的时
候,无法给出函数返回值的时候,提供一个另外的返回方式和返回值.
比如,计算开方。参数为负,算不出来开方,而函数的返回值是double,怎么办?扔出
一个Exception。这样被最近的catch接到,从而不走正常的返回通道。这种情况下,本
来正常通道就凑不通。这样简化了函数调用都要通过某个参数(指针所指向的结构)判
断一个任务是否完成。本来都要进行if, else if这样。改成try catch 就清晰了。方
便在你可以越级返回,即不在本次调用进行catch,而是在外层catch,比如一个类有很
多子类,就不用在每个子类实现的续函数中catch,而是在呼叫这些虚函数的那个函数
里面catch。
try{
p->virtualfun();
}catch(MyException e){
// no need to implement the catch in different virtualfu... 阅读全帖
G***l
发帖数: 355
45
来自主题: Programming版 - 门外汉求教 return statement用法
基本概念。纸上画画stack。
比如一个递归函数
factorial(n):
if n == 1:
return 1
else:
return n*factorial(n-1)
在main里调用
int param = 2
result = factorial(param)
程序会产生stack结构:
stack of main
------------------------
stack main:param=2
调用factorial(2),进入stack of f(2)
------------------------
|stack f2:n=2
|n不等于1执行n*f(1),进入stack of f(1)
| ------------------------
| |stack f1:n=1
| |stack f1:a_const_variable=1
| |... 阅读全帖
h*h
发帖数: 27852
46
来自主题: Programming版 - 王垠: 编程的宗派
http://www.yinwang.org/blog-cn/2015/04/03/paradigms
编程的宗派
总是有人喜欢争论这类问题,到底是“函数式编程”(FP)好,还是“面向对象编程”
(OOP)好。既然出了两个帮派,就有人积极地做它们的帮众,互相唾骂和鄙视。然后
呢又出了一个“好好先生帮”,这个帮的人喜欢说,管它什么范式呢,能解决问题的工
具就是好工具!我个人其实不属于这三帮人中的任何一个。
面向对象编程(Object-Oriented Programming)
如果你看透了表面现象就会发现,其实“面向对象编程”本身没有引入很多新东西。所
谓“面向对象语言”,其实就是经典的“过程式语言”(比如Pascal),加上一点抽象
能力。所谓“类”和“对象”,基本是过程式语言里面的记录(record,或者叫结构,
structure),它本质其实是一个从名字到数据的“映射表”(map)。你可以用名字从
这个表里面提取相应的数据。比如point.x,就是用名字x从记录point里面提取相应的
数据。这比起数组来是一件很方便的事情,因为你不需要记住存放数据的下标。即使你
插入了新的数据成... 阅读全帖
p*u
发帖数: 2454
47
来自主题: Programming版 - 编程的宗派
总是有人喜欢争论这类问题,到底是“函数式编程”(FP)好,还是“面向对象编程”
(OOP)好。既然现在出了两个帮派,就有人积极地做它们的帮众,互相唾骂和残杀。
然后呢,又出了一个“好好先生帮”,这个帮的人喜欢说,管它什么范式呢,能解决问
题的工具就是好工具!
我个人其实不属于这三帮人中的任何一个。
面向对象编程(Object-Oriented Programming)
如果你看透了表面现象就会发现,其实“面向对象编程”本身没有引入很多新东西。所
谓“面向对象语言”,其实就是经典的“过程式语言”(比如Pascal),加上一点点抽
象能力。所谓“类”和“对象”,基本是过程式语言里面的记录(record,或者叫结构
,structure),它的本质就是一个从名字到数据的“映射表”(map)。你可以用名字
从这个表里面提取相应的数据。比如point.x,就是用名字'x'从记录point里面提取相
应的数据。这比起数组来是一件很方便的事情,因为你不需要记住存放数据的下标。即
使你插入了新的数据成员,仍然可以用原来的名字来访问已有的数据,而不用担心下标
错位的问题。
所谓“对象思想”(区别于“面向... 阅读全帖
f*****Q
发帖数: 1912
48
首先最好能在标题或者帖子开头说明是C++,首先声明俺很久不用C++了,不一定说的对
,抛砖引玉。
1,看不懂。
2,函数可以是private,protected或者public。变量也可以是private, protected或
者public。实例变量好像不能在这里定义吧?
3,不能访问同类对象的private part。friend可以访问其他类对象的private part。
子类可以访问父类(不确定是不是这么叫)的protected部分,但是private不行。
4,构造函数没有返回值。没返回值不写void俺不太确定,俺记着没返回值的函数的缺
省返回值是int,不是void。
5,你说的初始化式大概是
classA::ClassA():variableA(0),variableB(4+someOutsideVariable){
...
}

variableA(0),variableB(4+someOutsideVariable)这一部分。
俺记着C++里面类实例变量是不可以在声明的时候直接赋值的。
6,其他的实例变量里面的constant可以在类初始化的时候赋值。
7,看不
C********a
发帖数: 10
49
来自主题: Programming版 - 门外汉求教 return statement用法
如果有一个recursive call 在终结的时候返回一个表达式的值 怎样才能把这个结果一
层层传递出去?
比如这个找in order tree最小值的方法:
public treeNode treeMinimumRecursive(treeNode root){
if (root.left=NULL)
return root;
else
treeMinimumRecursive(treeNode root.left);
}
开始做条件判断,treeNode.left 不为空就一直调用自己, 直到为空以后返回当前的
treeNode。
然后上一层拿到这个返回值,怎么才能把它作为自己的返回值再传给上层的函数?
网上看的似乎是把最后一行前加return 改成 return treeMinimumRecursive(treeNode
root.left);
这个return的是一个方法 而不是一个表达式 这种情况有定义吗
门外汉刚开始看 请各位拍砖
d*******l
发帖数: 338
50
来自主题: JobHunting版 - CarerCup 书里面的关于memory的一道题
我不敢说完全明白,但有点感觉,谈谈我得想法。
就像上面说的,为了保证能返回一个对齐的地址且有足够的空间,需要打出一些富裕。
多少富裕足够呢?就是代码里的offset。我记得在OS课上老师提到过这种做法,好像叫
container,就是比实际需要多分配空间,把中间开始的某个地址返回,前面的地方存
放些信息。
下面说说offset怎么来的。假设我们用malloc分配了一段空间,起始地址是p1。此时我
们想得到一个对齐的地址,最直接的做法就是& ~(alignment-1),这样低位清0,结果
就是对齐的。但这样做的结果相当于把原地址减去了一个[0, alignment-1]的数,也就
是低位被减掉了。得到的新地址的开始的一部分就是未分配的。代码中对p2进行这个操
作,得到的结果是p2=p1+offset-x,x就是在对齐过程中被减掉的数,可以看出p2>=p1+
1,这就保证了对齐之后的地址也是分配过的。
再说说p2[-1]=p1的作用。上面说的container方法有一个需要注意的就是free的时候,
如果直接free alloc返回的那个地址,其实是有问题的,因为那个是最初分配空间的中
... 阅读全帖
1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)