小编gro*_*kus的帖子

如何检查地图中是否包含密钥?

我知道我可以迭代一张地图m,

for k, v := range m { ... }
Run Code Online (Sandbox Code Playgroud)

并寻找一个键,但有一种更有效的方法来测试一个键在地图中的存在吗?

我在语言规范中找不到答案.

dictionary go go-map

666
推荐指数
10
解决办法
46万
查看次数

什么是Go等同于argv [0]?

如何在运行时获取自己的程序名称?什么是Go等同于C/C++的argv [0]?对我来说,使用正确的名称生成用法很有用.

更新:添加了一些代码.

package main

import (
    "flag"
    "fmt"
    "os"
)

func usage() {
    fmt.Fprintf(os.Stderr, "usage: myprog [inputfile]\n")
    flag.PrintDefaults()
    os.Exit(2)
}

func main() {
    flag.Usage = usage
    flag.Parse()

    args := flag.Args()
    if len(args) < 1 {
        fmt.Println("Input file is missing.");
        os.Exit(1);
    }
    fmt.Printf("opening %s\n", args[0]);
    // ...
}
Run Code Online (Sandbox Code Playgroud)

go

100
推荐指数
2
解决办法
4万
查看次数

"{{}} while(0)"在内核代码中的作用是什么?

可能的重复:
当我们定义一个宏时,do(0)有什么用?
为什么在C/C++宏中有时会出现无意义的do/while和if/else语句?
C多行宏:do/while(0)vs scope block

我已经看到了很多这样的用法,以前我是程序员想要轻松打破一段代码.为什么我们需要在这里执行while {...} while(0)循环?我们试图告诉编译器一些东西吗?

例如,在Linux内核2.6.25中,包含/ asm-ia64/system.h

/*
 * - clearing psr.i is implicitly serialized (visible by next insn)
 * - setting psr.i requires data serialization
 * - we need a stop-bit before reading PSR because we sometimes
 *   write a floating-point register right before reading the PSR
 *   and that writes to PSR.mfl
 */
#define __local_irq_save(x)         \
do {                    \
    ia64_stop();                \
    (x) = ia64_getreg(_IA64_REG_PSR);   \
    ia64_stop();                \
    ia64_rsm(IA64_PSR_I);           \
} while (0)
Run Code Online (Sandbox Code Playgroud)

c kernel linux-kernel

20
推荐指数
4
解决办法
6026
查看次数

字符串x中的最小窗口宽度,包含字符串y的所有字符

在字符串x中查找包含另一个字符串的所有字符的最小窗口宽度y.例如:

String x = "coobdafceeaxab"
String y = "abc"
Run Code Online (Sandbox Code Playgroud)

答案应该是5,因为x其中包含所有三个字母的最短子字符串y是"bdafc".

我可以想到一个复杂的天真解决方案O(n^2 * log(m)),在哪里n = len(x)m = len(y).有谁能建议更好的解决方案?谢谢.

更新:现在想起来,如果我将我的设置更改为tr1::unordered_map,那么我可以将复杂性降低到O(n^2),因为插入和删除都应该是O(1).

algorithm

19
推荐指数
3
解决办法
6870
查看次数

如何在Tcl中使用前导零将整数转换为字符串?

我正在学习Tcl.在Perl中,我可以这样做:

 $ perl -e 'for ($i = 0; $i < 5; $i++) { printf("name%03d\n", $i) }'
 name000
 name001
 name002
 name003
 name004
Run Code Online (Sandbox Code Playgroud)

我可以在Tcl中这样做吗?

tcl

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

Euler#26,如何将有理数转换为精度更高的字符串?

我希望得到1/7更好的精确度,但它被截断了.当我转换有理数时,如何才能获得更好的精度?

>>> str(1.0/7)[:50]
'0.142857142857'
Run Code Online (Sandbox Code Playgroud)

python floating-point floating-point-precision

7
推荐指数
2
解决办法
897
查看次数

什么是最重要的结构化软件设计原则?

今天我看到了一份工作描述,要求"用C++编写重要的经验,并在结构化设计原则方面进行彻底的基础",所以我想到了这些原则是什么.首先我觉得用一个句子看C++和"结构化设计"有点奇怪,然后我想,OK C++是一种多范式编程语言,所以也许它像C一样使用.我也查了一下维基百科页面并阅读关于异常处理和状态机是反结构化设计(毫不奇怪),但我仍然觉得很多东西都缺失了.所以我问你,最重要的结构化软件设计原则是什么?

language-agnostic programming-languages software-design design-principles

3
推荐指数
2
解决办法
2471
查看次数

项目欧拉126:有人可以解释一下吗?

项目Euler 126说:"如果我们再在这个固体中添加第二层,则需要四十六个立方体来覆盖每个可见的面部."

怎么会?我认为在3x2x1上铺设另一个3x2x1使其成为3x2x2,你需要6覆盖顶部,6覆盖底部,3 + 2 + 3 + 2覆盖每一层,所以总数是32,每个白色面都是覆盖,对吗?我怎么错了?我很努力,但我不明白.提前致谢.

geometry

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

为什么这个 Perl shuffle 函数不shuffle?

#!/usr/bin/perl

use Data::Dumper;
use strict;
use List::Util qw(shuffle);

my @arr = [qw(Foo Bar Baz Qux Quux Quuz)];
@arr = shuffle @arr;
print Dumper @arr;
Run Code Online (Sandbox Code Playgroud)

Perl 版本是 v5.32.0。我看到的结果总是Foo Bar Baz Qux Quux Quuz.

$ ~/tmp/shuffle.perl
$VAR1 = [
      'Foo',
      'Bar',
      'Baz',
      'Qux',
      'Quux',
      'Quuz'
    ];
$ /usr/bin/perl --version

This is perl 5, version 32, subversion 0 (v5.32.0) built for x86_64-linux-gnu-thread-multi
Run Code Online (Sandbox Code Playgroud)

perl

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

使用ifstream解析文本的惯用方法是什么?

我正在尝试解析文本文件以查找模式然后获取子字符串.这段代码片段运行正常,但我可以改进吗?我可以在这里最小化复制吗 即我得到一行并将其存储在buf然后构造一个字符串,这个复制可以被删除吗?

简而言之,实现这一目标的惯用方法是什么?

    std::ifstream f("/file/on/disk");
    while (!f.eof()) {
        char buf[256];
        f.getline(buf, sizeof(buf));
        std::string str(buf);
        if (str.find(pattern) != std::string::npos)
        {
            // further processing, then break out of the while loop and return.
        }
    }
Run Code Online (Sandbox Code Playgroud)

c++ idiomatic

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