小编Ant*_*Ant的帖子

为什么我不能用foo(char*args [])做foo({"asd","asd1"})?

我正在阅读C++ Primer,在第6.2节中它说:

"参数初始化的工作方式与变量初始化相同."

然而当我这样做时:

void foo(char* args[]) {return;}

int main() {

char* args[]={"asd","dsa"};  // ok.

foo({"asd","dsa"});          // error.

}
Run Code Online (Sandbox Code Playgroud)

这是为什么?

c++ function

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

为什么编译器允许C++中的vector.begin()= vector.end()?

在学习C++中的迭代器时,我尝试了以下方法:

#include <vector>

int main() {
    std::vector<int> a;
    a.end()=a.begin();
    //Why is this even allowed by the compiler?
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

c++ vector std

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

为什么类型T的模板函数参数可以绑定到常量值而不是右值?

考虑:

template <typename T> void f(T&);

const int b = 2;
f(b);      // ok
f(2);      // error, can not bind rvalue to lvalue reference
Run Code Online (Sandbox Code Playgroud)

为什么f(const int)允许?逻辑似乎表明如果程序员没有明确地将模板参数定义为const T&,他/她想要修改binded-to变量.

所以在这种情况下,问题是,为什么模板实例化给自己提供了在没有明确要求的情况下实例化consts的自由?

即使有一个允许模板实例化用consts实例化的理由,那么为什么在这种情况下会绑定到被禁止的rvalues呢?你可以将rvalues绑定到const左值引用.在这种情况下,模板将被实例化f<const int>,并且f(2)将被允许​​.

我想知道这些决定背后的原因,而不是对标准的引用.

c++ templates

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

启用 DHT 时,是否每个对等点都需要成为 BitTorrent 中的节点?

每次向对等点请求特定文件时,每个对等点是否都成为 DHT 节点?还是节点独立于对等点存在?本质上,你如何成为一个节点?你可以是一个peer而不是一个节点吗?

如果问题太简单(这里是菜鸟),我很抱歉,但我无法在其他任何地方找到答案。我使用的术语与此处使用的相同。

bittorrent dht

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

标签 统计

c++ ×3

bittorrent ×1

dht ×1

function ×1

std ×1

templates ×1

vector ×1