问题列表 - 第41218页

为空间优化一系列tribools

让我先从一些背景知识开始:

通过"tribool"我理解一个可以包含以下值之一的变量:true,falsenull.

问题是复制int的数组与指向 bool的指针,OP希望有一个尽可能小的tribools数组(或多或少).

使用"一点点"最基本的bit-fu,我提出了一个解决方案,每个tribool使用2位,并允许以16个字节存储OP的64个tribool数组,这是可以的.

我使用的tribool机制非常简单,如:

  • boolean A表示"null或not null",
  • boolean B表示"如果不为null则为true或false".

但后来我想......"比特"的算法定义是:

是指定其中两个同样可能的事件应发生的信息量.

显然,真/假值是1位大.两个真假值整体上是2位大.

那么我们的概念摩擦呢呢?

我的观点是:就所包含信息的大小而言,tribool大于1位但小于2位.

  • 理由1:假设我们实现了如上所述的if boolean.如果布尔A为"null",则布尔值B的值是多余的,并且不携带任何相关信息.
  • 理由2:在一个tribool中存储来自2个独立布尔值的信息是不可能的,因此它具有

(以上都不是正式的证据,但我相信我们可以同意关于tribool的"大小"严格大于1位且严格小于2.)


我的问题是:

如何以编程方式利用tribool信息少于2位的事实,并在软件(c,c ++?)中实现一个N tribool数组,其内存占用量小于N/4某些N的字节数?

是的,我确实理解这样的实现并不是真正的硬件友好,并且执行速度比任何具有冗余的常见解决方案都要慢(如OP的问题所示).让我们优化空间,而不是效率.

显然,这种实现需要一种摩博尔的不同表示而不是一对bool(这本身就是多余的,如前所述).该理论认为可以实现这一目标,我希望看到实际的实施.有任何想法吗?

c c++ optimization bit-manipulation

9
推荐指数
1
解决办法
435
查看次数

在c中替换头文件iostream.h

我不知道c中的头文件是c ++中的iostream.h

c

0
推荐指数
1
解决办法
3050
查看次数

在实现中重新包含头

假设我有一个标题 foo.h:

#ifndef FOO_H
#define FOO_H
#include <string>
#include "non_standard_class.h"

std::string foo(MyClass a);
...
#endif
Run Code Online (Sandbox Code Playgroud)

和实施 foo.cpp将是

#include <vector>

#include "foo.h"

std::string foo(MyClass a)
{
   std::vector<int> x;
   MyClass b;
   ...
}
Run Code Online (Sandbox Code Playgroud)

重新包括<string>non_standard_class.h进入是一个很好的实践foo.cpp吗?关键是:如果我读foo.cpp了,我怎么能理解MyClass来自哪里?我需要看看,foo.h但会更困难.

c++ header

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

如何让dateformat为月和日的大写

我的strings.xml中有我的字符串:

<string name="day_format">EEEE</string>
<string name="date_format">dd. MMMM</string>
<string name="date_format_us">MMMM dd</string>
Run Code Online (Sandbox Code Playgroud)

我在代码中使用它们:

    private void reinit() {
    mDayFormat = getString(R.string.day_format);
    if (!DateFormat.is24HourFormat(this))
    {
    mDateFormat = getString(R.string.date_format_us);
    }
    else {
        mDateFormat = getString(R.string.date_format);
    }
    mTimeFormat = is24HourMode(this) ? FORMAT_24_HOURS : FORMAT_12_HOURS;
    mCalendar = Calendar.getInstance();
}
Run Code Online (Sandbox Code Playgroud)

但它以小写形式显示日期和月份,我希望它可以将两者都大写.我怎样才能做到这一点?

java date capitalize

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

什么是这个带有三角形的CSS活动菜单样式?

在下面的图片中,我已经模拟了一个CSS活动菜单样式,我希望找到它的例子,并希望能够复制.

三角活动菜单

您会注意到有一个三角形突出显示活动菜单,它也可以显示为粗体.

问题1.这个"活动菜单三角形样式"实际上叫什么?所以我可以找到CSS的例子.

问题2.我在哪里可以找到这方面的例子?

css geometry

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

MVC3 Razor视图中的文本文字问题

为什么我需要使用 <text>标记来封装管道文字'|' 在这个标记?当然,它远远超出了ActionLink方法的范围.

@foreach (var item in Model.DetailItem.PlannedResources)
{ 
    <tr>
        <td>
            @if (Model.ViewMode == ViewMode.Edit)
            {
                @Html.ActionLink("Edit", "Edit", new { id = item.PlannedResourceId }) <text>|</text>
                @Html.ActionLink("Delete", "Delete", new {id = item.PlannedResourceId})                                                                     
            }
            @Html.ActionLink("Details", "Details", new { id = item.PlannedResourceId })
        </td>
        <td>
            | @item.ResourceType.Name
        </td>
    </tr>
}
Run Code Online (Sandbox Code Playgroud)

如果我不使用它,我得到错误CS1525: Invalid expression term '|',但第二个'|' 无阻碍地得到.

asp.net-mvc razor asp.net-mvc-3

16
推荐指数
2
解决办法
9888
查看次数

单击按钮时使用选择器调用不同类的方法

我编写了一个方法并用一个按钮连接它,以便在单击按钮时调用它.现在我想要做的是在点击某个其他视图上的按钮时调用相同的方法.

我怎样才能做到这一点?我是否需要使用选择器或通知或简单的方法调用?

iphone methods selector

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

Fabric要求root密码

我正在使用Fabric运行以下内容:

def staging():
    """ use staging environment on remote host"""
    env.user = 'ubuntu'
    env.environment = 'staging'
    env.hosts = ['host.dev']
    _setup_path()

def bootstrap():
    """ initialize remote host environment (virtualenv, deploy, update) """
    require('root', provided_by=('staging', 'production'))
    run('mkdir -p %(root)s' % env)
    run('mkdir -p %s' % os.path.join(env.home, 'www', 'log'))
    create_virtualenv()
    deploy()
    update_requirements()
Run Code Online (Sandbox Code Playgroud)

但我明白了:

ubuntu@host.dev:~/projects/proj_name$ fab staging bootstrap
[host.dev] run: mkdir -p /home/ubuntu/www/staging
Password for ubuntu@host.dev: 
Run Code Online (Sandbox Code Playgroud)

为什么Fabric要求我的密码?这是sudoers文件中没有密码的默认ubuntu root用户.这里发生了什么?

python fabric

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

没有mod_rewrite的Zend Framework URL

在我没有安装mod_rewrite的情况下,是否有任何简单的方法可以从同一个regex路由器制作URL

http://www.example.com/module=admin&controller=user&action=indexm1=12m2=37

和Zend Framework应该能够通过读取相同的格式来调度控制器.

php mod-rewrite zend-framework

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

'wget' 基于框架的完整网站

我有一个小问题。我想递归下载该网页,但它基于“框架”。标准方法帮不了我。我尝试了不同的变体,但没有任何结果。我最多可以下载一个递归,我在那里找到了示例。我怎样才能完全抓取该网站,然后离线使用它?谢谢。

linux wget

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