Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 具有多个';使用std::foo';一行的语句?_C++_C++11 - Fatal编程技术网

C++ 具有多个';使用std::foo';一行的语句?

C++ 具有多个';使用std::foo';一行的语句?,c++,c++11,C++,C++11,根据这里的建议(),我避免使用名称空间std。但是,基于C++入门的第3.1节中所说的,我一直在单独声明,如: using std::cout; using std::cin; using std::setw; using std::setprecision; 假设这被认为是一种可接受的做法,是否有一种简洁的方式在一行中说明所有这些?我知道我能做到: using std::cout; using std::cin; using std::setw; using std::setprecisio

根据这里的建议(),我避免使用
名称空间std。但是,基于C++入门的第3.1节中所说的,我一直在单独声明,如:

using std::cout;
using std::cin;
using std::setw;
using std::setprecision;
假设这被认为是一种可接受的做法,是否有一种简洁的方式在一行中说明所有这些?我知道我能做到:

using std::cout; using std::cin; using std::setw; using std::setprecision;
但这并不特别紧凑。本着定义变量时如何工作的精神,我尝试了以下方法:

using std::cout, std::cin, std::setw, std::setprecision;
但是我的编译器抛出了一个异常


如果我的假设是错误的(即,如果
使用std::cout;
不是好的实践),那么这可能就是答案。我当然对此持开放态度,因为我不想鼓励或编写难闻的代码。

不要与语言抗争,用它来工作

因此,您收到的建议是不完整的,永远不要通过将
std
引入您当前所在的名称空间来污染它,即使是一点一点。这样做甚至会引入围绕过载解决方案的细微缺陷。辅导课只是为了让学生能从树上看到木头

至于效率,这一点是没有意义的,因为这对编写的编译程序没有任何影响,例如,
std::cout
cout

当然,C++确实为你提供了一种实现排版优雅的概念。毕竟,它可能是迄今为止最强大的语言。您可以构建一个可变宏来实现您想要的功能,在调用站点的使用将是
make_优雅(cout、cin、setw、setprecision)


过载点的一个示例:

#include <iostream>
// see what happens if you put using namespace std; here.
template<typename T>
T max(T& a, T& b)
{
    std::cout << "Next week's lottery numbers are";
    return a > b ? a : b;
}

int main() {
    const int a = 5;
    const int b = 6;
    max(a, b);
}
#包括
//看看如果使用名称空间std放置会发生什么;在这里
模板
T最大值(T&a、T&b)
{
标准::cout b?a:b;
}
int main(){
常数INTA=5;
常数int b=6;
max(a,b);
}

在这里,如果使用名称空间std编写
,程序行为将发生重大变化
使用std::max
因为
std::max
比我构建的
max
更适合参数。

最好的方法:直接使用
std::cout
。为什么不
使用命名空间std
?@Jean BaptisteYunès:@Lilisten我会用隐式问题更新问题:这样做不好吗?@neuronet IMHO,这不坏,但不必要。一旦你习惯了显式地写它,:ST::CUT更自然,一个孤立的 Cuth看起来很奇怪。谢谢这很有帮助,我最近从Python中提取了C++,知道有经验的开发者会认为什么是代码气味是非常有用的。现在我只是想知道如何改变我的标题,使它成为一个更好的问题。