由买买提看人间百态

topics

全部话题 - 话题: 操作符
1 2 3 下页 末页 (共3页)
c*****o
发帖数: 178
1
这里操作符是通常作为function member的操作符,比如+=
class sum//The base class
{
public:
sum(void);
virtual sum& operator+=(const sum&);
virtual void print_result();
virtual ~sum(void);
};
class sum_int ://The derived class
public sum
{
public:
sum_int(void);
sum_int(const int&);
virtual sum_int& operator+=(const sum_int&);
virtual void print_result();
virtual ~sum_int(void);
private:
int value;
};
int main()//The main function
{
int test[] = {1,2,3};
sum_int A(
l*****y
发帖数: 58
2
会自动聚合的操作符重载或宏
我们通常会有一些数据有比较复杂的结构.
data A,B,C,D,R ;
它们之间的运算仅仅是遍历所有数据成员,对每个数据成员进行运算。 那这种操作符
重载后的运算
R = A + B
实质上是
for_all_units {
R(id) = A(id) + B(id)
}
而 R = A + B - C
实质上是
for_all_units {
tmp(id) = A(id) + B(id)
}
for_all_units {
R(id) = tmp(id) - C(id)
}
当多个这样的运算符联立时,即使是用 -O2 之类的优化编译,遍历所有单元的操作会
重复多次。 有没有什么成熟的design pattern 或 可以自动合并的宏定义之类, 可以
自动实现将
R = A + B - C - D
编译成
for_all_units {
R(id) = A(id) + B(id) - C(id) - D(id)
}
谢谢
c****6
发帖数: 22
3
来自主题: Programming版 - 重载 ^ 操作符编译出错
为了方便利用matlab的现有code,我试图重载 ^ 以便我可以在VC里用
0.4^2 这种表达式,
于是我定义了个重载操作符如下
double operator^ (double x, double p)
{
return pow(x,p);
}
但是编译报错,
error C2803: 'operator ^' must have at least one formal parameter of class
type
不明白错在哪里。
X****r
发帖数: 3557
4
sum& operator+=(const sum&);和
sum_int& operator+=(const sum_int&)是两个不同的函数,
后者没有override(中文是什么?)前者,而是重载(overload)了同一个操作符。
y**b
发帖数: 10166
5
来自主题: Programming版 - C++的"初始化"小结
以前读C++ Primer第四版中文版给自己写了个摘录,一搜索“初始化”,发现内容还很
庞杂,贴出来供参考,前面是页号。
042 两种初始化: 直接初始化(), 拷贝初始化=
044 变量初始化:类类型调用默认构造函数,局部内置类型不初始化,全局内置类型初
始化为零。
080 容器元素的值初始化(未指定元素的初始化式时):类类型调用默认构造函数,内置
类型置零。
097 数组元素的初始化(同变量初始化规则044):元素为类类型的数组调用默认构造函数
;局部内置数组不初始化,全局内置数组初始化为零。
117 new动态数组元素的初始化:类类型调用默认构造函数,内置类型不初始化,或指定
进行值初始化为零(且只能为零)。
151 new动态对象之初始化:类类型调用默认构造函数,内置类型不初始化,或指定进行
值初始化为任意值。
对提供了默认构造函数的类类型,没有必要进行值初始化, 会自动调用构造函数:
string *p=new string;和string *p=new string();无区别。
对内置类型或未定义默认构造函数的类类型,存在区别:int *p=new int... 阅读全帖
s********u
发帖数: 1109
6
我自己小结的是,面试碰到:
1.prefix即波兰表达式,用递归最方便(因为操作符和操作数不是一种类型,操作符也
没有一种对应的文件类型,所以把操作符push进stack稍微麻烦点);
2.postfix即逆波兰表达式,用stack最方便(因为总是先碰到操作数,不用push操作符
)。
3.infix即中缀表达式,不要求括号的话用longway大侠的方法,要求的话太麻烦了gg。
K*****k
发帖数: 430
7
来自主题: JobHunting版 - 关于算术表达式求值的谜思?
很多数据结构参考书都说,后缀式(逆波兰式)比较适合求值,用一个操作数栈来计算.
但是表达式通常是中缀式,那么如何转为后缀式呢?一种方法是构造中序表达式树,然
后输出后序。但这方法比较麻烦,还有一种方法是利用一个操作符栈结合算符优先级表
,可以把中缀式转为后缀式。
所以分两步走:
1. 一个操作符栈 + 算符优先级表, 中缀式 ->后缀式
2. 后缀式 + 一个操作数栈, 表达式求出结果
但是严蔚敏的数据结构书还介绍了一个经典的方法:
双栈 + 算符优先级表的方法直接对表达式求值,无需引入后缀式的概念。
请问这两种方法是否本质相同?(都涉及了操作符栈,操作数栈和算符优先级表)
严的方法是否就是不显示求出后缀式,但实际上每一步都直接把后缀式的中间计算结果
算出来入栈?
O******i
发帖数: 269
8
来自主题: JobHunting版 - 探讨IT大公司的hiring bar?
最近面了一家IT大公司被拒,一共经历了N轮技术面试。自己感觉还不算太坏,但也有
三轮发挥不太完美,所以心里很没底。
结果还是被拒了。
下面是这三轮的详细经历,请大家探讨一下大公司招人的标准。
第i轮是找二叉树从根开始的所有路径,使得该路径上所有节点的值之和等于一个给定
的数。我犯了一个战略错误,因为我在准备过程中看过CarrerCup的更通用的解法,不
要求从根开始,也不要求到叶子结束,于是我直接用了那个思路,在白板上写下了类似
下面的代码
void FindPath(Node* root, int sum, int path[], int level)
{
if (root == NULL)
return;
int s = 0;
for (int i = 0; i < level; i++)
s += path[i];
int value = root->data;
if (s + value == sum)
PrintPath(path, level, value);
path[leve... 阅读全帖
r**h
发帖数: 1288
9
来自主题: JobHunting版 - F面经
请教一下这题的标准做法是什么?
我这种做法可以吗?
数字的下一个valid字符:右括号、操作符、数字
操作符的下一个valid字符:左括号、数字
左括号的下一个valid字符:左括号、数字
右括号的下一个valid字符:右括号、操作符
就和自动机一样检查下一个字符是否valid。同时兼顾检查左右括号的匹配。
r**h
发帖数: 1288
10
来自主题: JobHunting版 - F面经
请教一下这题的标准做法是什么?
我这种做法可以吗?
数字的下一个valid字符:右括号、操作符、数字
操作符的下一个valid字符:左括号、数字
左括号的下一个valid字符:左括号、数字
右括号的下一个valid字符:右括号、操作符
就和自动机一样检查下一个字符是否valid。同时兼顾检查左右括号的匹配。
g****g
发帖数: 1828
11
来自主题: Linux版 - awk
AWK是一种优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎
之一。这种编程及数据操作语言(其名称得自于它的创始人 阿尔佛雷德·艾侯 、
Peter Weinberger 和 Brian Kernighan 姓氏的首个字母)的最大功能取决于一个人所
拥有的知识。 AWK 提供了极其强大的功能:可以进行正则表达式的匹配,样式装入、
流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语
言所应具有的几乎所有精美特性。实际上 AWK 的确拥有自己的语言: AWK 程序设计语
言, 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程
序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,
还有无数其他的功能。gawk 是 AWK 的 GNU 版本。
最简单地说,AWK 是一种用于处理文本的编程语言工具。AWK 在很多方面类似于 Unix
shell 编程语言,尽管 AWK 具有完全属于其本身的语法。它的设计思想来源于
SNOBOL4 、sed 、Marc Rochkind设计的有效性语言、语言工具 y... 阅读全帖
g*******y
发帖数: 1930
12
来自主题: Programming版 - c++ question
突然发现,我表达好差啊。我前面说的那句“string literals 能直接用 < 比较吗?
”本意是个反问句,意思是你想实现字符串比较,直接裸用<操作符作用在两个const
char*,是不行的。
结果被人当成疑问句了。。。
另外说一点就是,像这个帖子里面的情况,比较两个string literal,重载操作符是做
不到的。
可行的办法只能是定义一个 bool strcmp()之类的函数。
为什么?因为操作符重载,前提条件是至少一个operand必须是class type。

Theoretically, you can implement the operator overloading,
bool operator < (const std::string & s1, const std::string & s2)
{
return strcmp(s1.c_str(), s2.c_str())<0;
}
r****y
发帖数: 26819
13
没看出来。
最起码,这个故事编得不够周密。前三个程序能严格排除+-*/以外的“不合格”操作符
,那个看起来最短的程序,对非法操作符是怎么定义的,完全看不出来。加上对非法
操作符的检查以后,第四种能比第一种强多少,就很难说了。
再者,第二种和第三种编程里用到的思想,本来就不完全是为解决两个数运算这样一个
目的而建立的,所以最多说,在各自的语言里也许第二和第三种未必是最适合该题的写
法,但这和那两种语言如何,是两回事。换句话说,第二种第三种语言都可以写第一种
代码,也许最适合两数四则运算这个例子,维护也不错。
最后,这个故事就是抛砖引玉为了科普FP的,目的无可厚非。但是要证明FP能所其它不
能,需要一个非常的例子,能让其它语言见短的。俩数四则运算这个例子显然不行。
n*******w
发帖数: 687
14
来自主题: JobHunting版 - amazon onsite 面经
bless!
1.写一段程序比较两棵树是否一样。
常见题。
2.有一个奇怪的linkedlist,除了next pointer还有一个random pointer指向一个随机
的节点。问如何实现clone函数。
最近版上刚讨论过。先creat big linkedlist然后split。
3.写一段代码,给一个字符串,例如"30*(5+10)",输出计算结果。
经典算法。两个stack,一个操作数,一个操作符。写代码其实不简单,要定义操作符
的优先级。
4.写一段代码,输入一个数组和一个数字,找两个数组元素和为给定数字。
经典题。允许O(n)空间,hashtable。否则先sort,一前一后两个指针往中间找。
5.输入一个linkedlist和一个数字例如:9->7->8->6->1->2 和 3,输出还是一个
linkedlist但是每三个数reverse一下,例如8->7->9->2->1->6。
版上最近刚讨论过。递归或者iterative都有。
6.如何求一个树的mirror(将所有节点的children节点反序排列).
跟遍历similar。
7.下面这道题目是吃饭的时候问的... 阅读全帖
e*e
发帖数: 38
15
升降号顺序规律及其变调的顺序是可以递推出来的,其递推公式是
零阶是C调,音阶是 C D E F G A B C
对升号操作符(#):
在原调式音阶中的第四个音升半音后,再取升号音的下一个音
也就是原调式音阶中的第五个音作为新调的根音
对降号操作符(b):(可以证明是#的反操作)
在原调式音阶中的根音的前一个音降半音后,再取降号音数起的的第5个音
也就是原调式音阶中的第4个音作为新调的根音
例如,
ANY MAJOR: I II III IV V VI VII
C MAJOR: C D E F G A B
第四个音升 C D E #F G A B
再取第5个音也就是升音号的下一个音 这里是 G 得到新调G
G MAJOR G A B C D E #F --------升一阶
#C 取D
D MAJOR D E #F
n**********2
发帖数: 648
16
【 以下文字转载自 Programming 讨论区 】
发信人: xykkkk (asdf), 信区: Programming
标 题: 老码农冒死揭开行业黑幕:如何编写无法维护的代码(zz)
发信站: BBS 未名空间站 (Fri Nov 28 13:28:27 2014, 美东)
如何编写无法维护的代码
让自己稳拿铁饭碗 ;-)
– Roedy Green(翻译版略有删节)
简介
永远不要(把自己遇到的问题)归因于(他人的)恶意,这恰恰说明了(你自己的)无
能。 — 拿破仑
为了造福大众,在Java编程领域创造就业机会,兄弟我在此传授大师们的秘籍。这些大
师写的代码极其难以维护,后继者就是想对它做最简单的修改都需要花上数年时间。而
且,如果你能对照秘籍潜心修炼,你甚至可以给自己弄个铁饭碗,因为除了你之外,没
人能维护你写的代码。再而且,如果你能练就秘籍中的全部招式,那么连你自己都无法
维护你的代码了!
(伯乐在线配图)
你不想练功过度走火入魔吧。那就不要让你的代码一眼看去就完全无法维护,只要它实
质上是那样就行了。否则,你的代码就有被重写或重构的风险!
总体原则
Quidquid... 阅读全帖
l*******r
发帖数: 322
17
来自主题: Programming版 - 简单c++问题,大家练练手
假设求模运算符"%"限定第一个操作符必须大于等于零,第二个操作符必须大于零
现在希望推广这个运算符,使得第一个参数可以小于零
0. 给出你对第一个参数小于零时求模运算的定义
1. 补充完整以下函数,使得第一个参数可以小于零
int mod( int a, int b)
{
// ...
}
2a. 补充完整以下宏定义,使得第一个参数可以小于零
#define MOD(a,b) // ...
2b. 你写的宏定义可能有副作用吗?
s***e
发帖数: 122
18
来自主题: Programming版 - C++编程问题:union inside struct
是这样的。只有第一次=操作符是用于将该引用指向某变量。之后=操作符都是赋值操作。
我还得谢谢你提醒了我想起了以前看过的对引用变量的说明呢。
s***e
发帖数: 122
19
来自主题: Programming版 - 弱人再问一个关于Java的问题
Java里面必须要这个转换,通过<<, >>>, | 以及&操作符来转换。
另外即使在C里面你的int *B = (int *)A也是不确定的,根据little-endian/big-
endian不同而不同,也应该使用位操作符。

A
d****p
发帖数: 685
20
来自主题: Programming版 - a[i]=i++
C++不规定计算子表达式的次序(除了&& || :?是例外).
以这个例子来说,=左右是两个子表达式,所以可以先左后右或是反过来.
这个和操作符的优先次序是两回事.操作符优先次序适用于同一个操作数能被两个操作
符作用时,取那一个避免歧义.C++没
有特定次序运算子表达式,是为了支持优化,代价是希望编码员不要写出上述导致歧义的
代码.
虽然标准没有规定次序,但具体的编译器肯定有内部次序(既然标准没规定).我胡乱猜测
a[i]优先可能的原因(1)lvalue优先,因
为优化多针对rvalue(2)[]的优先级高于postfix ++?
y**b
发帖数: 10166
21
来自主题: Programming版 - 基本功不扎实,问个问题
哦。我想说的意思是明确地
static_cast::const_iterator>(itor) == c_itor,当然这很繁琐,
但是在无需了解机理的情况下比较可靠(我觉得写个==就得理解机理,对普通程序
员太过分了)。
根本原因应该还是==并非成员函数,自动类型转换能通过。
如果==是成员函数,自动转换从const_iterator到const iterator, 编译应该出
问题了,正如你的疑惑。
一般将算术和关系操作符定义为非成员函数,赋值及复合赋值操作符定义为成员函数。
Effective STL item 26也讨论了这个问题。
y**b
发帖数: 10166
22
来自主题: Programming版 - 请问释放容器内存的方法
折腾了几天,感觉这个问题可能无解,也许C++标准就不认为这是个问题。
先后测试了四种allocator,没有一个能生效,这里也有人提到:
http://bytes.com/topic/c/answers/133169-return-memory-os
1. new/delete:
http://www.josuttis.com/cppcode/allocator.html
2. malloc/free (跟1类似):
http://www.usidcbbs.com/read-htm-tid-4896-fpage-3.html
3. boost::pool_allocator, boost::fast_pool_allocator:
http://www.boost.org/doc/libs/1_53_0/libs/pool/doc/html/boost_p
rfaces.html#boost_pool.pool.interfaces.interfaces.pool_allocator
无论release_memory, purge_memory都无实效,而且容易出现seg fault。... 阅读全帖
b*****9
发帖数: 89
23
来自主题: Programming版 - 简易计算器优先计算级别怎么算?
基本算法database已经说了,用算符优先级算法,相当于把中缀转后会缀表达式。如果
计算器的操作符很多需要扫一下计算器的语法生成一个有向图计算所有操作符栈内和栈
外的优先级,不多的话手算下就可以。具体请参考龙书前几章。
t****t
发帖数: 6806
24
来自主题: Programming版 - 简易计算器优先计算级别怎么算?
在不带括号的情况下, 表达式的分析就是分析某个算子是和前面的操作符结合还是后面
的操作符结合. 用C语言的术语来说, 优先级高的先结合, 优先级一样的, 看结合性.
比如:
1+2*3 ==> 1+(2*3)
1*2+3 ==> (1*2)+3
1-2-3 ==> (1-2)-3 [-是左结合的操作]
a=b=c ==> a=(b=c) [=是右结合的操作]
d****i
发帖数: 4809
25
来自主题: Programming版 - override operator[] inline
这个不对吧,C里面没有操作符重载一说,数组的[]就是简单的指针操作,但是上述C++
里面的inline的操作符重载[]是一次函数调用,就会有点overhead,所以即便把中间的
require()去掉,还是比C稍有点performance hit。这个比较一下C和上面的C++生成的
机器码就知道了。
x****k
发帖数: 2932
26
如何编写无法维护的代码
让自己稳拿铁饭碗 ;-)
– Roedy Green(翻译版略有删节)
简介
永远不要(把自己遇到的问题)归因于(他人的)恶意,这恰恰说明了(你自己的)无
能。 — 拿破仑
为了造福大众,在Java编程领域创造就业机会,兄弟我在此传授大师们的秘籍。这些大
师写的代码极其难以维护,后继者就是想对它做最简单的修改都需要花上数年时间。而
且,如果你能对照秘籍潜心修炼,你甚至可以给自己弄个铁饭碗,因为除了你之外,没
人能维护你写的代码。再而且,如果你能练就秘籍中的全部招式,那么连你自己都无法
维护你的代码了!
(伯乐在线配图)
你不想练功过度走火入魔吧。那就不要让你的代码一眼看去就完全无法维护,只要它实
质上是那样就行了。否则,你的代码就有被重写或重构的风险!
总体原则
Quidquid latine dictum sit, altum sonatur.
(随便用拉丁文写点啥都会显得高大上。)
想挫败维护代码的程序员,你必须先明白他的思维方式。他接手了你的庞大程序,没有
时间把它全部读一遍,更别说理解它了。他无非是想快速找到修改代码的位置、改代码
、编译,然后就能交差,... 阅读全帖
D***n
发帖数: 6804
27
来自主题: Programming版 - C++糟粕和需要避免的。
基本上我认为这些特性都是C++的糟粕:
1)模板:模板的本意是把type和control flow分开,多个type可以共享一个control
flow。但是它引发的问题远比带来的方便程度要多。最后大多数模板都搞成一个杂种:
被塞入各种特化。
我的建议:STL一类成熟的可以用,但是能不用就不用。
2)基本操作符重载:当一个正常人看到A=B居然引发了另外一个线程SIGABT的时候,你
会想到这么一个赋值语句居然触发了某个析构函数把内存给清空了的事情吗?面对现实
吧,这个东西引起的麻烦远远超过其便利性。
至少至少,重载的操作符应该和正常符号分开,比如 = 改成 |= 一类。
3)重载:重载是个好主意,问题在:1)库里面这些重载的函数会被替换成别的函数名
称用于链接,这个替换协议不仅不是标准的一部份,而且还巨复杂。2)只能重载基本
类型。基本上就是一个残废功能。
我的方法:与其让系统自动起名字,不如我自己给他起,比如 init_IntInt, init_Int
, int
4)const
当我读到 Thinking in C++ ,作者开始介绍const的时候,我就开始讨厌C++了,因为
c... 阅读全帖
c***s
发帖数: 70028
28
据韩联社报道称,韩国方面已经确认“岁月号”部分船员危机中弃船率先逃走,并披露整个过程。
据22日韩国海洋警察厅消息,16日从“岁月号”沉没现场率先返回的警备艇是木浦海警所属的123艇(100吨级)。海警123艇在当天上午8点58分得到海警状况室的出发命令后立即出发,并于9点30分到达事故现场。123艇到达时,“岁月号”已经向左侧倾斜了50-60度。
“岁月号”船员在9点38分最后一次和珍岛沿岸海上交通管制中心通话后,开始逃离驾驶室。仅在此之前10分钟,他们还在船内广播中声称“船舱是安全的”。
当时船体已经出现较大倾斜,5层的驾驶室已经接触到了水面,船员轻易就可以登上位于“岁月号”左舷的123艇。船员在逃出时甚至无视身边14艘的可供25人乘坐的救生艇,径直登上123艇。这些船员在仓皇逃出时,大部分都穿着绿色的操作符,一眼便可辨认出是船员。
韩国海警123在当天上午9点50分将船长李某等10名船员以及一般乘客80人就起,并将其中的57人交送给珍岛郡政府的给水船。
据当时在给水船上的珍岛郡政府相关人士介绍,事后看新闻才知道当时船长李某也在其中,只以为他是普通船员。
第一批被救10名船员上午1... 阅读全帖
f********t
发帖数: 6999
29
【 以下文字转载自 JobHunting 讨论区 】
发信人: winetricks (winetricks), 信区: JobHunting
发信站: BBS 未名空间站 (Sat Mar 22 10:46:35 2014, 美东)
http://www.ibm.com/developerworks/cn/aix/library/1307_lisl_c11/
以一个简单的 string 类为示例,实现拷贝构造函数和拷贝赋值操作符。
示例程序 :
class MyString {
private:
char* _data;
size_t _len;
void _init_data(const char *s) {
_data = new char[_len+1];
memcpy(_data, s, _len);
_data[_len] = '
o******h
发帖数: 1142
30
第一次在meter停车被罚。有没有办法免除,或者减少罚款?
还有我对这个ticket存有疑问。那个meter写的是4pm没法投币了,4pm之后不能停车,
否则会被
tow away.我投币是到4pm的。然后4:05pm直接给了一张$45的ticket. 这种操作符合规
定吗?
既然写的是tow away,就应该tow啊。他不tow不是蒙骗我吗?
g*******y
发帖数: 1930
31
来自主题: JobHunting版 - 随便写写一些经验吧 2(未完待续)
想写的东西很乱,想总结点什么出来也理不清楚思路,还是按着时间顺序讲讲吧,顺带
着用画外音做点总结发点感想:
去年4月份开始因为还不急着找工作投简历什么的,规划着先把找工作的基础打牢(画外
音,规划好时间计划很重要,尤其是对于刚刚开始找工作的同学,如果因为准备不够充
分而fail一个不错的面试机会还是很可惜的),C++ primer 4th edition我是读了2遍,
后来9-10月又读了一遍。事实上后来证明了,C++上花的精力有点过多了,我甚至把所
有的章节全部总结了一遍,连什么所有操作符的precedence都背下来了。而我主要找工
作的几个公司都不太注重考察C++语言细节,只涉及到了virtual function
polymorphism等比较重要的概念。这里要提一点,我之所以那么花功夫啃C++细节,因
为我以前听说找工作需要做不少关于C++语言的测试题,尽管我的面试中并没有考到这
些细节,但是啃了下来还是觉得挺有收获的。
找大公司的software engineer工作,算法肯定是大头了。我自己过去比较喜欢算法,
暑假努力把CLRS啃了一遍,有点走马观花,倒回来再看第二遍的时
j**l
发帖数: 2911
32
来自主题: JobHunting版 - 请做一道简单题(附感想)
还有一种方法不需要任何flag
int t = 0;
for (int i = 0; a[i] != '\0'; i++)
{
if (a[i] != ' ')
{
// 利用了 || 操作符的短路操作
if (i == 0 || a[i-1] == ' ')
t++;
}
}
return t;
y**i
发帖数: 1112
33
来自主题: JobHunting版 - Goog面试挂了,回报一下本版

函数的种类?难道这个是要问有非虚函数,虚函数,覆盖函数,重载函数,操作符函数
等等?
j**l
发帖数: 2911
34
来自主题: JobHunting版 - 给大家列几个C++的盲点
我的盲点未必是大家的盲点,欢迎加入更多
对反引用成员指针的两个操作符,你可以重载->*但不可以重载.*
构造函数的初始化列表的初始化次序和你的书写次序无关,和类中定义的次序有关
inline关键字对声明不起作用,必须放在函数定义处
异常处理为何常给catch传引用?一是传值慢,二是可以支持多态,如果抛出的异常是
派生类的类型,但捕获用的是基类的类型
STL的成员函数为何放在头文件?林锐说,类模板的成员函数要放在头文件。
K******g
发帖数: 1870
35
来自主题: JobHunting版 - 请教个C题目
大家去试一下,跑出来的结果是
0100
很奇怪,我想了好久都不明白,好像是操作符优先级的问题?
但是好像也不对,如果!=优先级高于&,那么结果应该还是 0000 啊。
h**k
发帖数: 3368
36
来自主题: JobHunting版 - amazon电面大家是怎么读代码的
没错,我就是这么一个符号一个符号读的。自己试着练习一两次就可以读的比较顺了。
而且读程序可以很容易的把时间耗掉。
象&这种符号,我一般都结合上下文直接说的含义,比如做位操作符,我就说 bitwise
and operator。面试官都能理解。
h**k
发帖数: 3368
37
来自主题: JobHunting版 - 问个c++题
没有办法作为成员函数。因为对于二元操作符,如果定义为成员函数,缺省的左参数必
须是对象本身。
比如对于operator +,如果我们在一个class A里用成员函数overload它,那么我们只
能支持A+B,不能支持B+A。
在这个例子里,我们希望实现 cout << A,而不是A << cout。那么要不在cout所属类
中对A定义 <<,要不定义<<作为non-member operator。
y*********e
发帖数: 518
38
来自主题: JobHunting版 - what is java enclosure-今天被hm问倒了
Apache Common里面那个提供的是一系列的interface还有static的函数来做辅助。
真正的Closure还要提供语法上的支持。要提供一种简单的方法,能够把一个代码片段
当作参数带入函数。
比如,你给的链接里面的 Ruby 的示例代码:
def highPaid(emps)
threshold = 150
return emps.select { |e| e.salary > threshold }
end
这里的代码片段 |e| e.salary > threshold 其实会被编译成一个匿名函数。输入 e,返回
e.salary > threshold。所以输入类型是Employee,输出是Boolean。
但是Java 6在语法上就不支持,非要创建一个interface,然后new一个新的对象,把对
象当作参数带入select函数。麻烦之级。
除此之外,还要求编译器能自动鉴别数据类型 (Type Inference)。比如,我写一个匿
名函数,x => x + 1,这个 x 可以是 int,也可以是 long,还可以是 double。对于
支持ge... 阅读全帖
H******7
发帖数: 1728
39
来自主题: JobHunting版 - stl map的一道面试题,求助求助
题目就是: 如何sort一个stl map。写出代码
我感觉是需要用模板 然后重载操作符。
有人能帮我说说么,有代码更好.
thanks!
y**i
发帖数: 1112
40
是只有用new操作符分配的对象实例才在heap里。
如果在函数里写:
string s, *ps = &s;
这个还是在stack里。
必须string *ps = new string;
才在heap里
d***8
发帖数: 1552
41
来自主题: JobHunting版 - 请问一道很难的面试题
put operators in a list of numbers so that the result equals to a
number. Give you an array of integers, ask you to write program to put
operators (+ - * / %) between the integers (you may put in paratheis
wherever you want too), to have the equation equals to the result.
eg: 5 * (3 + 8) % 9 = 6
题目是:给你一串数字,让你写程序,把操作符(可以是任意多个 + - * / %)放进各
个数字之
间,同时还可以在任意位置放进括号,让这个算术表达式的值等于一个给定的数字。
比如:给你 5 3 8 9 = 6
你的程序应该输出 5 * (4 + 8) % 9 = 6
d***8
发帖数: 1552
42
来自主题: JobHunting版 - 请问一道很难的面试题
俺只会穷举各个操作符的排列顺序,
怎么穷举括号的位置呢?
p**e
发帖数: 533
43
来自主题: JobHunting版 - 递归法parse计算数字string
operator 在两个数字前面(不是中间),给一个string(空格分隔的操作符和数字)
,利用递归计算result。
比如:
+ 3 2 表示3+2=5
+ + 3 -2 * 1 6 表示(3+ -2)+(1*6) = 7
大家来写写code。
d**********x
发帖数: 4083
44
来自主题: JobHunting版 - 一些位运算的题目
只能使用 ! ~ & ^ | + << >>
可以用 =,可定义局部变量,字长32bit,右移是算数右移,不许cast
常量只能在0~0xff之间。实际上一般面试不会有这个约束,就忽略吧
1. int isAsciiDigit(int x);
如果x是'0'~'9',返回1,否则返回0
2.int anyEvenBit(int x);
如果任何偶数位上有1返回1 (1 --> 1, 2 --> 0)
3.int copyLSB(int x);
如果x & 1,则返回0xffffffff,否则返回0
4.int leastBitPos(int x);
5.int divpwr2(int x, int n);
输出 x / pow(2, n);,n非负。
6.int conditional(int x, int y, int z);
相当于x ? y : z
7.int isNonNegative(int x);
非负数返回1
8.int isGreater(int x, int y);
如果x > y,返回1
9.int absVal(int x);
返回x的绝对值
10.int isP... 阅读全帖
c**s
发帖数: 159
45
来自主题: JobHunting版 - 一些位运算的题目
请问操作符个数怎么算出来的
比方说 5题 不是 x >> n 么?
r**h
发帖数: 1288
46
来自主题: JobHunting版 - 一点码工求职经验总结,回报本版
个人总结的一些C/C++问题:
C Tutorial:
http://www.cprogramming.com/tutorial.html
C问题集:
http://www.indiabix.com/technical/c/
http://www.parashift.com/c++-faq-lite/index.html
1) 为啥要用c++;
2) encapsulate, polymorphism ,inheritance 的概念;
encapsulate: Hide details of implementation
polymorphism : has multiple forms
inheritance: is-a relationship
3)class的概念
type of object
4)default constructor是啥样的;
without parameters
5) 写copy  constructor要注意啥
parameter must be reference : Node(const... 阅读全帖
s********u
发帖数: 1109
47
来自主题: JobHunting版 - 问一个post fix 算式计算的问题
为了保险起见,我自己试了一下:
stringstream stream;
stream.str("3745+38");

int num;
char op;
stream>>num;
cout << num << endl;
stream>>op;
cout<< op < stream>>num;
cout< 确认是可以分开3745,+, 38。就算没有空格也是如此。
何况应该后缀表达式数字之间至少是有空格隔开的,否则怎么表示23+3.
在这种情况下,stream>>str,然后再用string创建stream转换成数字或者直接取str[0
]操作符就行了。
m*******0
发帖数: 38
48
来自主题: JobHunting版 - 问道题
有一个字符串,仅包含两种字符:'x'和'*', 如s = xx*。现在把它看成是逆波兰表达
式,其中'x'为操作数,'*'为操作符,即上述字符串可以看成是表达式:x * x,这是
一个合法的波兰表达式。但有些字符串是不能转化成合法的逆波兰表达式的,比如:s
= x**,但我们可以通过“在某位置添加”,“在某位置删除”和“变换某位置的字符
”这3种操作使其变成合法的表达式,比如上述s,我可以把第一个'*'变换成'x',得到
s = xx*,这就变成了一个合法的逆波兰表达式了。
问给定一个字符串,最少通过几次添加,删除或变换操作能使其变为合法的逆波兰表达
式?
n*******s
发帖数: 482
49
补充一下 在最后的结果表达式中,数字的顺序随便(但必须k个都用到),操作符的选择
和顺序随便,括号
的选择随便,但要合法。
楼上说的递归,没错,在这个题目里backtracking本质上就是permutation,不是么.
另外 在无括号的情况下,backtracking求表达式很好写,但是有括号呢?
b*****9
发帖数: 89
50
括号是不是如果当前操作符是乘除就自动给后面出来的表达式加个括号?a * ( rest )
1 2 3 下页 末页 (共3页)