小编Pau*_*nta的帖子

类"函数声明"后"默认"是什么意思?

我见过default在类中的函数声明旁边使用过.它有什么作用?

class C {
  C(const C&) = default;
  C(C&&) = default;
  C& operator=(const C&) & = default;
  C& operator=(C&&) & = default;
  virtual ~C() { }
};
Run Code Online (Sandbox Code Playgroud)

c++ default declaration keyword c++11

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

Python名称修改

在其他语言中,有助于生成更好代码的一般准则总是尽可能隐藏所有内容.如果对变量是私有还是受保护存在疑问,最好与私有变量一起使用.

对Python来说也是如此吗?我应该首先在所有内容上使用两个前导下划线,并且只在我需要时将它们隐藏起来(只有一个下划线)吗?

如果惯例只使用一个下划线,我也想知道其基本原理.

这是我在JBernardo的回答中留下的评论.它解释了为什么我问这个问题,以及为什么我想知道为什么Python与其他语言不同:

我来自语言,训练你认为一切都应该只是公开的,而不是更多.原因是这将减少依赖性并使代码更安全.反向做事的Python方式 - 从公共开始到隐藏 - 对我来说很奇怪.

python naming-conventions

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

C中的波浪号运算符

我已经看到了ELF哈希算法中使用的波浪号运算符,我很好奇它的作用.(代码来自Eternally Confused.)

unsigned elf_hash ( void *key, int len )
{
  unsigned char *p = key;
  unsigned h = 0, g;
  int i;

  for ( i = 0; i < len; i++ ) {
    h = ( h << 4 ) + p[i];
    g = h & 0xf0000000L;

    if ( g != 0 )
      h ^= g >> 24;

    h &= ~g;
  }

  return h;
}
Run Code Online (Sandbox Code Playgroud)

c c++ operators

88
推荐指数
5
解决办法
7万
查看次数

基于范围的普通数组的工作原理如何?

在C++ 11中,您可以使用基于范围的语言for,它可以充当foreach其他语言.它甚至适用于普通的C数组:

int numbers[] = { 1, 2, 3, 4, 5 };
for (int& n : numbers) {
    n *= 2;
}
Run Code Online (Sandbox Code Playgroud)

怎么知道什么时候停止?它是否仅适用于已在相同范围内声明的静态数组for?你会如何for在动态数组中使用它?

c++ arrays foreach c++11

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

C++和D中的元编程

C++中的模板机制只是偶然地对模板元编程有用.另一方面,D's专门设计用于促进这一点.而且显然它更容易理解(或者我听说过).

我没有D的经验,但是我很好奇,你能用D做什么,而你在模板元编程方面不能用C++做什么?

c++ d metaprogramming

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

复制构造函数和赋值运算符

如果我覆盖operator=,复制构造函数会自动使用new运算符吗?同样,如果我定义了一个拷贝构造函数,会operator=自动"继承"拷贝构造函数的行为吗?

c++ constructor operators copy-constructor assignment-operator

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

未使用的功能会被优化吗?

一个相当简单的问题......这些天的编译器倾向于进行大量的优化.它们是否也从最终输出中删除未使用的函数?

c c++ compiler-construction

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

A*允许的启发式在网格上滚动

我需要一些帮助找到一个良好的启发式解决以下问题:

您将得到一个R-by- C网格和六面的骰子.设startend是在这个网格两种截然不同的细胞.找到一条路径start,end使得当模具沿路径转动时,模具面朝上的总和是最小的.

模具的起始方向如下("2"朝南):

在此输入图像描述

我模拟这个问题的方法是将模具的面值视为图形中边缘的成本.图形的顶点具有形式(row, col, die)(即,网格中的位置和模具的当前状态/方向).顶点不是简单的原因(row, col)是因为你可以使用骰子的多个配置/方向结束相同的单元格.

我用A*来找到问题的解决方案; 给出的答案是正确的,但效率不高.我已经确定问题是我正在使用的启发式问题.目前我正在使用曼哈顿距离,这显然是可以接受的.如果我将启发式乘以常量,则不再允许:它运行得更快,但并不总能找到正确的答案.

我需要一些帮助才能找到比曼哈顿距离更好的启发式方法.

algorithm heuristics a-star path-finding

40
推荐指数
4
解决办法
2270
查看次数

在C++模板中使用尖括号引入的所有语法问题是什么?

在C++模板中使用尖括号进行实例化,vector<int>Java和C#语言对其泛型使用相同的语法.

然而,D的创造者对尖括号带来的问题非常直言不讳,并且他们提出了一种新的语法foo!(int)- 但我从未见过关于尖括号带来的问题的太多细节.

其中一个是用另一个模板实例化模板时vector<vector<int>>,这会导致一些(较旧的?)编译器将尾随的">>"与位移或流操作符混淆.解决方案是在两个尖括号之间插入一个空格,但现在还没有编译器能够解析这种语法吗?

另一个问题是使用大于运算符时foo<3 > 2>.解析器会认为运算符实际上关闭了模板实例化; 修复是介绍括号foo<(3 > 2)>.但我不认为有很多情况你需要这样做,无论如何,我宁愿在需要时输入额外的括号,而不是引入新的语法并且总是要输入感叹号.

使用尖括号还有哪些其他问题使D开发人员创建了新语法?

c++ syntax templates d

29
推荐指数
4
解决办法
6236
查看次数

有哪些简单的zlib教程?

我正在寻找一个关于zlib的好教程.我只对解压缩档案感兴趣.我还想知道如何在存档中访问所需的文件,最好是单独使用文件名,如果可以在zlib中完成的话.

c c++ zlib

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