小编ahe*_*ang的帖子

strdup的替代方案

我正在为包含名称的书写一个C++类:

class Book {
private:
    char* nm;
..........
............
..........
...........
};
Run Code Online (Sandbox Code Playgroud)

我不被允许std::string在这项任务中使用.所以我在这里strdup用来将参数名称的值复制到构造函数中的nm:

Book::Book(const char *name, int thickness, int weight)
    : nm(NULL)
    , thck(thickness)
    , wght(weight)
{
    if (name)
        nm = strdup(name);
}
Run Code Online (Sandbox Code Playgroud)

是否有替代方法可以在不使用的情况下实现相同的结果strdup,而是使用关键字new

c++ string strdup dynamic-memory-allocation

6
推荐指数
2
解决办法
1万
查看次数

在单周期数据路径中加载半字和加载字节

有一个问题已经被问到将负载字节实现到单周期数据路径而不必更改数据存储器,解决方案如下.

替代文字http://img214.imageshack.us/img214/7107/99897101.jpg

这实际上是一个非常现实的问题; 大多数存储器系统完全基于字,并且单个字节通常仅在处理器内部处理.当您在许多计算机上看到"总线错误"时,这通常意味着处理器尝试访问未正确字对齐的内存地址,并且内存系统引发了异常.无论如何,因为字节地址可能不是4的倍数,所以我们不能直接将它们传递给内存.但是,我们仍然可以得到任何字节,因为每个字节都可以在某个字中找到,所有字地址都是4的倍数.所以我们要做的第一件事就是确保我们得到正确的字.如果我们取地址的高30位(即ALUresult [31-2])并将它们与低端的两个0位组合(这就是"左移2"单元真正做的那样),我们有包含所需字节的字的字节地址.这只是字节自己的地址,向下舍入到4的倍数.这个改变意味着lw现在也会将地址舍入到4的倍数,但这没关系,因为非对齐地址无论如何都不适用于lw单元.好的,现在我们从内存中获取数据字.我们如何得到我们想要的字节?好吧,请注意,字中字节的字节偏移量仅由字节地址的低2位给出.因此,我们只需使用这两个位来使用多路复用器从字中选择适当的字节.注意使用big-endian字节编号,适用于MIPS.接下来,我们必须将字节零扩展到32位(即,只将其与高端的24个零组合),因为问题指定这样做.实际上,在这个问题中这是一个轻微的错误:实际上,lbu指令对字节进行零扩展,但是lb符号扩展它.那好吧.最后,我们必须扩展MemtoReg控制的多路复用器以接受一个新输入:lb情况的零扩展字节.MemtoReg控制信号必须加宽到2位.原始的0和1情况分别变为00和01,我们添加了一个新的情况10,仅用于lb的情况.

即使在阅读了解释之后,我也不太明白它是如何工作的,特别是关于左移ALU结果为2会给出字节地址......这怎么可能?所以,如果我想加载一个半字,那么我会做一个左移,我会得到半个字的地址?什么是更好的方法来加载字节,通过修改数据内存加载半字?(上面的问题提出了我们无法修改数据存储器的约束)

verilog mips cpu-architecture vhdl

5
推荐指数
1
解决办法
7251
查看次数

按位摆弄算法

如果我有一个32位二进制数,并且我想用我所拥有的16位数替换二进制数的低16位,并保持该数字的高16位以产生新的二进制数.我怎么能用简单的按位运算符呢?

例如,32位二进制数是:

1010 0000 1011 1111 0100 1000 1010 1001
Run Code Online (Sandbox Code Playgroud)

而我的低16位是:

                    0000 0000 0000 0001
Run Code Online (Sandbox Code Playgroud)

结果是:

1010 0000 1011 1111 0000 0000 0000 0001
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

algorithm bit-manipulation bitwise-operators

5
推荐指数
1
解决办法
565
查看次数

在java中连接两个int

是否有一种简单的方法,而不必使用java库来连接两个int?也许数学?

说我有9和10,然后我希望它是910,或224和225然后我希望它是224225.

java algorithm

5
推荐指数
2
解决办法
1万
查看次数

PHP中的*搜索算法

有没有人在PHP中实现A*算法?我知道维基百科有一个伪代码和一个C++链接,但我似乎找不到一个用PHP编写的.

我也在寻找一种高效的书面A*算法

php algorithm a-star path-finding

5
推荐指数
0
解决办法
5407
查看次数

按值排序哈希表

如果我有一个Hashtable,我想按值排序,即:整数按降序排列.我怎么能这样做,并能够打印所有的键值对?

java

5
推荐指数
1
解决办法
3万
查看次数

如何使用A*算法找到最好的三条路线

在A*中,通常你获得的结果只有一条路径.根据A*,对于给定的起点和终点是否有可能有3条推荐路径?所以第二个返回的是第二个最佳路径,第三个是第三个最佳路径.

我想的可能是以某种方式修改启发式以反映第二和第三条最佳路径.你们怎么想?

更新: 我的实现是在PHP中,我使用的是封闭集.所以,如果有办法做到这一点,请告诉我.

algorithm a-star shortest-path

5
推荐指数
1
解决办法
1129
查看次数

用自定义声音振动iphone/ipod

我有自己的声音,我想在手机振动时播放,最常见的事情是做:

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
Run Code Online (Sandbox Code Playgroud)

但这是使用系统的声音.有没有办法使用我自己的声音?我可以使用的声音格式是什么?

iphone objective-c ipad

5
推荐指数
1
解决办法
976
查看次数

向单元格添加阴影会导致延迟滚动

所以我有一个有阴影的UIView:

[containerFrame.layer setShadowOffset:CGSizeMake(0, 1)];
[containerFrame.layer setShadowRadius:4.0];
[containerFrame.layer setShadowColor:[UIColor colorWithRed:34/255.f green:25/255.f blue:25/255.f alpha:1.0].CGColor];
[containerFrame.layer setShadowOpacity:0.4];
Run Code Online (Sandbox Code Playgroud)

有了这个,我的滚动FPS下降到20-30.移除阴影然后繁荣,我的FPS回到60并且滚动像黄油一样光滑.现在问题是我需要在这个盒子/容器视图周围有一个阴影效果.如何在不降低滚动速度的情况下实现这一目标?

iphone objective-c uiview ipad ios

5
推荐指数
1
解决办法
1837
查看次数

循环在树枝上并在三次迭代后休息

我有以下树枝代码:

{% for likeditem in user.getItemLikes() %}
    //iterate over each liked items here
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

但是我想只迭代前三项 user.getItemLikes()

我该怎么办?

twig

5
推荐指数
1
解决办法
7236
查看次数