相关疑难解决方法(0)

为什么"使用命名空间std"被认为是不好的做法?

我已经告诉别人,编写using namespace std;代码是错误的,我应该用std::coutstd::cin直接代替.

为什么被using namespace std;认为是不好的做法?是低效还是冒着声明模糊变量(与名称std空间中的函数具有相同名称的变量)的风险?它会影响性能吗?

c++ namespaces using-directives std c++-faq

2486
推荐指数
36
解决办法
78万
查看次数

'using'指令应该在命名空间的内部还是外部?

我一直在运行StyleCop而不是一些C#代码,并且它一直报告我的using指令应该在命名空间内.

是否存在将using指令放入命名空间而不是命名空间外的技术原因?

.net c# namespaces stylecop code-organization

1975
推荐指数
11
解决办法
19万
查看次数

如何在C++中正确使用名称空间?

我来自Java背景,使用包,而不是命名空间.我习惯于将一起工作的类放在一起形成一个完整的对象,然后再从该包中重用它们.但现在我在使用C++.

你如何在C++中使用命名空间?您是为整个应用程序创建单个名称空间,还是为主要组件创建名称空间?如果是这样,如何从其他命名空间中的类创建对象?

c++ namespaces

229
推荐指数
10
解决办法
18万
查看次数

如何将cin和cout重定向到文件?

我怎样才能重定向cinin.txtcoutout.txt

c++

125
推荐指数
5
解决办法
16万
查看次数

c ++标题中的"using namespace"

在我们所有的C++课程,所有的老师总是把using namespace std;在之后#include在它们的S .h文件.从那时起,我觉得这很危险,因为在另一个程序中包含该标题我会将命名空间导入到我的程序中,可能没有意识到,打算或想要它(标题包含可以非常深入嵌套).

所以我的问题是双重的:我是对的,using namespace不应该在头文件中使用,和/或是否有某种方法来撤消它,例如:

//header.h
using namespace std {
.
.
.
}
Run Code Online (Sandbox Code Playgroud)

还有一个问题是:标题文件是否应该是#include相应.cpp文件所需的所有标题,只有那些标题定义所需的标题,并让.cpp文件#include为其余标题,或者没有,并声明它需要的所有内容extern
问题背后的原因与上面相同:在包含.h文件时我不想要惊喜.

另外,如果我是对的,这是一个常见的错误吗?我的意思是在现实世界的编程和"真正的"项目中.

谢谢.

c++ namespaces header-files

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

为什么我的登录名为std名称空间?

在下面的代码中,我定义了一个简单的log函数.在main我尽量称呼它; 我打电话std::log.然而,我自己log被称为; 我看到"日志!" 在屏幕上.有谁知道为什么?我使用G ++ 4.7和clang ++ 3.2.

#include <iostream>
#include <cmath>

double log(const double x) { std::cout << "log!\n"; return x; }

int main(int argc, char *argv[])
{
  std::log(3.14);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ overloading namespaces

67
推荐指数
4
解决办法
2227
查看次数

"使用命名空间std"有什么用?

有什么用using namespace std

我想看看Layman的解释.

c++ namespaces using std

59
推荐指数
2
解决办法
25万
查看次数

cd中的std :: string vs string

可能重复:
为什么'using namespace std;' 在C++中被认为是一种不好的做法?
使用std命名空间

我一直在一堆不同的论坛上徘徊,我似乎每次都会看到这种情况.这是一个非常初学的问题.

我通常定义一个程序

#include<string>
using namespace std;

string x;
Run Code Online (Sandbox Code Playgroud)

我看到一堆代码示例将字符串定义为

std::string.
Run Code Online (Sandbox Code Playgroud)

这样做的目的是什么?是好的做法还是有一些功能?

c++ string std

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

你应该在std命名空间中重载swap吗?

我今天读到一些有趣的内容,说用户提供的类型(作为模板参数提供)调用swap的"标准"方式是......

using std::swap;
swap(something, soemthingelse);
Run Code Online (Sandbox Code Playgroud)

这样做的原因是使用的参数依赖查找要么使用一个swap在用户的命名空间或函数swapstd命名空间.这为我提出了一个感兴趣的问题.当我超载std::swap了我的课之一,我实际上已被定义它的std命名空间... namespace std { void swap(/*...*/){/*...*/} }.这种做法错了吗?我应该定义自己的swaps std或我自己的命名空间(以及为什么)?

c++ stl

20
推荐指数
2
解决办法
3179
查看次数

全局变量"计数"含糊不清

#include <algorithm>
using namespace std;

int count = 0, cache[50];

int f(int n)
{  
    if(n == 2) count++;
    if(n == 0 || n==1) return n;
    else if (cache[n] !=- 1) return cache[n];
    else cache[n]= f(n-1) + f(n-2);
    return cache[n]; 
}
Run Code Online (Sandbox Code Playgroud)

我在gcc 4.3.4中使用了这个函数,并得到以下错误:

prog.cpp: In function ‘int f(int)’:
prog.cpp:38: error: reference to ‘count’ is ambiguous
Run Code Online (Sandbox Code Playgroud)

在我的本地机器(mingw32)上,我得到的错误是这个,虽然它不适合int 'cache[]'.

有什么理由吗?

c++ variables global

18
推荐指数
1
解决办法
3万
查看次数