小编Wil*_*mKF的帖子

我可以使用volatile sig_atomic_t来避免C++ 03中的互斥锁吗?

如果我在具有原子读取和递增/递减支持的硬件上,我是否可以使用volatile sig_atomic_tC++ 03来访问原子操作并避免使用完整的互斥锁,或者我必须等待C++ 11和std::atomic<int>

c++ mutex volatile stdatomic sig-atomic-t

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

Python中没有返回语句的定义行为是什么?

给出以下Python代码:

def avg(a):
  if len(a):
    return sum(a) / len(a)
Run Code Online (Sandbox Code Playgroud)

什么是语言定义的行为,avg当长度a为零或其行为未被语言指定,因此不应该在Python代码中计算?

python return

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

是否有更简单的Python map构造(None,fcn())?

Python的文档map()部分说明:

如果是Nonefunction,则假定为identity函数;

因此,如果我有一些像这样的Python代码:

def yearsback(tbl, yb):
    def fcn():
      y = None
      i = 0
      for (year, prefix, suffix) in reversed(sorted(tbl.iterkeys())):
        if y == None:
          y = year
        elif y > year:
          i, y = 1 + i, year
        if i >= yb:
          return
        yield (year, prefix, suffix)
    return map(None, fcn())
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法来写这个?此外,我怀疑reversed(sorted(tbl.iterkeys()))也可以简化.

python map equivalent

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

可以更简洁地表达这个Python循环吗?

我遇到了一些Python v2.7代码,我已经重构成为这个代码:

for ssid in (ssid for ssid in overlaps
             if ssid != subseq_id and ssid not in merged):
Run Code Online (Sandbox Code Playgroud)

但我觉得应该有一种方法来表达这个而不使用两个for陈述?

python refactoring for-loop python-2.7

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

如何在C++中创建具有非标准顺序的整数集?

在C++ 03中,我想创建一个std :: set,在迭代时,首先出现一个整数,之后,我不关心什么顺序,但是我需要一个排序来确保没有重复组.例如,如果我有一组年份,并且在迭代时我想要在所有其他年份之前处理2010年.

std::set<int> years;

// I do not know the set of years up front, so cannot just make a vector, plus
// there could potentially be duplicates of the same year inserted more than
// once, but it should only appear once in the resultant set.
years.insert(2000);
years.insert(2001);
years.insert(2010);
years.insert(2011);
years.insert(2013);

for (std::set<int>::iterator itr = years.begin(); itr != years.end(); ++itr) {
   process_year(*itr);
}
Run Code Online (Sandbox Code Playgroud)

基本上,我需要提供一个比较器,在运行时已知的某一年(例如2010年)与其他年份的比较少,但剩余的年份是按顺序排序的,但没有按任何必要的顺序排列,只是为了确保没有重复.组.

c++ comparator stdset c++03

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

为什么读取/ proc/cpuinfo似乎没有提升文件位置?

我有以下代码,最终永远读取'/ proc/cpuinfo',因为它每次读取都会得到相同的结果.为什么文件指针不会先进并达到eof?似乎这个特殊文件有不同的语义.

  const int bufSize = 4096;
  char buf[bufSize + 1];
  const string cpuInfo = "/proc/cpuinfo";
  int cpuFD = ::open(cpuInfo.c_str(), O_RDONLY);

  if (cpuFD == -1) {
    logOutputStream << "Failed attempt to open '" << cpuInfo << "': "
                    << strerror(errno) << endl;
  } else {
    assert(bufSize <= SSIZE_MAX);

    logOutputStream << "Contents of: '" << cpuInfo << "'.\n";

    for (int nRead = ::read(cpuFD, buf, bufSize); nRead != 0;) {
      if (nRead == -1) {
        logOutputStream << "Failed attempt to read '" …
Run Code Online (Sandbox Code Playgroud)

c++

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

为什么makefile shell的结果与shell中的结果不一样?

使用GNU makefile内容:

SVNVERSION_NUMBER := $(shell svnversion --version | perl -lne 'print $1 if /version (\d+.\d+.\d+)/')

$(error $(SVNVERSION_NUMBER))
Run Code Online (Sandbox Code Playgroud)

我得到的结果是:

Makefile:3: *** svnversion, version 1.6.2 (r37639).  Stop.
Run Code Online (Sandbox Code Playgroud)

但是,如果我键入shell:

svnversion --version | perl -lne 'print $1 if /version (\d+.\d+.\d+)/'
Run Code Online (Sandbox Code Playgroud)

我得到了结果:

1.6.2
Run Code Online (Sandbox Code Playgroud)

显然,我的shell语法没有按照我的想法进行,但我不明白为什么.

谢谢.

shell makefile gnu-make

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

这个C#声明是什么意思?

在C#程序中,我看到以下声明:

public class myForm : Form
public abstract myForm1 : myForm
public interface myInterface
public interface myInterface2 : myInterface
public class myClass : myForm1, myInterface2
Run Code Online (Sandbox Code Playgroud)

myClass对myForm1和myInterface2意味着什么?

myForm1是基类吗?如果是这样,并且C#中没有多重继承,那么这个与myClass的接口关系是什么?界面如何与班级不同?

c# interface class

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

如何使bool引用参数默认?

在C++中,是否可以使bool &函数的参数可选?

void foo(bool &argument = /* What goes here? */);
Run Code Online (Sandbox Code Playgroud)

在我的函数foo中,如果调用者不关心放入参数的结果,我希望编译器默认给出一个虚拟位置.否则,不关心的呼叫者必须这样做:

bool ignored;

foo(ignored);
Run Code Online (Sandbox Code Playgroud)

c++ arguments default-value

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

如何有效地确定整数的汉明权重是否恰好是1?

给定C++ 03中的32位或64位整数,确定是否只有一位设置的有效方法是什么?(例如,值正好是1,2,4,8,16,32等中的一个)C++ 03库(或者如果不是C++ 11)是否有任何内置函数可以在我遇到的任何硬件上高效工作在吗?我想将它用于在多次出现时频繁发生的衰减消息.

c++ integer hammingweight c++03

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

在C++中赋值到右移是什么意思?

我遇到了一些令人费解的代码:

int mask = someFunction();
mask>>=1; // What does this line do?
Run Code Online (Sandbox Code Playgroud)

我以前从未见过这种模式,想要了解它的作用.

c++ operators bit-shift

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