如果我有函数调用for循环条件,如下所示:
for (auto it = s.begin(); it != s.end(), ++it) {}
Run Code Online (Sandbox Code Playgroud)
它是在每次迭代时被调用的吗?我希望是的.编译器是否允许对其进行优化?当前的编译器是否足够聪明?或者我更喜欢使用以下内容:
for (auto it = s.begin(), auto end = s.end(); it != end; ++it) {}
Run Code Online (Sandbox Code Playgroud)
?
内核编码风格和 gnome 的 C 风格指南都指出:
Do not unnecessarily use braces where a single statement will do.
if (condition)
action();
Run Code Online (Sandbox Code Playgroud)
但同时它有时应该被使用,如在以下else分支中:
if (condition) {
do_this();
do_that();
} else {
otherwise();
}
Run Code Online (Sandbox Code Playgroud)
是否有任何技术或可用性原因更喜欢这种方式?有什么客观的理由不每次都把牙套放在那里吗?
对于多维数组,有可能以某种方式重载运算符吗?
就像是:
class A {
...
int& operator[][] (const int x, const int y);
...
}
Run Code Online (Sandbox Code Playgroud) 可以在我的.ssh/config文件中指定密码吗?就像是
Host host1
User user1
Pass password
Run Code Online (Sandbox Code Playgroud)
我发现所有资源都建议使用密钥,但这不是我的选择,我想使用密码.
如果没有股票openssh,是否有任何补丁可以允许这个?
编辑:我需要使用密码的原因是从linux连接到cygwin sshd时访问网络驱动器.
我想知道是否有任何聪明的技巧如何安全地将整数转换为枚举.在您投票之前,这是重复的,我不是在询问如何转换(int i; Enum e = static_cast<Enum>(i)很简单).我正在问如何安全地进行,验证结果值是否真的在枚举中.
以下代码
enum class E {
A = 1,
B = 2
};
int main(int, char **) {
int i = 3;
E e = static_cast<E>(i);
}
Run Code Online (Sandbox Code Playgroud)
将编译(AFAIK)但e不包含枚举中的有效值.我想出的最好的方式是
switch (i) {
case 1:
return E::A;
case 2:
return E::B;
default:
throw invalid_argument("");
}
Run Code Online (Sandbox Code Playgroud)
1)看起来不太聪明2)不能很好地扩展.我可能会把一些宏放在一起,以使这更容易,但它仍然看起来很愚蠢.
那么有没有"标准"的方法呢?
谢谢
我可以实现类似于以下代码的内容:
#define MODULE base
#if defined (MODULE ## _dll) <-- this should do `#ifdef base_dll`
...
#else
...
#endif
Run Code Online (Sandbox Code Playgroud)
第二行显然是错误的。我能以某种方式做到这一点吗?
谢谢
我需要使用成员声明的条件.
template <bool> struct B;
template <> struct B<true> { void foo(); };
template <> struct B<false> { };
template <typename T>
struct A : public B<is_default_constructible<T>::value> {
using B<is_default_constructible<T>::value>::foo();
void foo(int) {}
};
Run Code Online (Sandbox Code Playgroud)
这显然不起作用,因为B<bool>::foo在一半的情况下没有定义.我怎样才能做到这一点?要在foo(int)旁边B<>::foo()
显示可见A<T>范围?
感谢帮助
如何在指定的提交中获取文件的 SHA 哈希?我可以使用 获取触及文件的所有提交git log file,但是如何在每个特定提交中获取文件的 SHA 哈希值?
我想我可以通过检查提交而不是使用来做到这一点git-hash-object,但必须有更简单的方法。
我正在尝试记录我的代码YARD,但是我很难弄清楚如何摆脱以下警告:
$ ~/.gem/ruby/2.3.0/bin/yard
[warn]: @param tag has unknown parameter name: val
in file `lib/wolfsden_myanimelist/values.rb' near line 22
Files: 4
Modules: 2 ( 2 undocumented)
Classes: 4 ( 2 undocumented)
Constants: 6 ( 6 undocumented)
Attributes: 14 ( 0 undocumented)
Methods: 4 ( 0 undocumented)
66.67% documented
Run Code Online (Sandbox Code Playgroud)
在以下代码中:
# @overload episode
# Gets last seen episode.
# @return [Integer] last seen episode
# @overload episode=(val)
# Sets last seen episode.
# @param val last seen episode
attr_reader :episode
def …Run Code Online (Sandbox Code Playgroud) 是否有可能有一个独立的可执行文件能够在 Linux 和 Windows 上运行?它不一定来自一个二进制代码。我用 gcc 编译 linux 版本,用 mingw 编译 windows 版本,然后“合并”它们,没有问题。这样的事情可能吗?
我想问题是是否可以将 PE 和 ELF 写入一个文件。或者如果有一些 Linux 和 Windows 都能理解的基本脚本。