【发布时间】:2015-10-27 05:42:45
【问题描述】:
首先,我无法理解 C++ 标准库或 std 的结构。例如,“你好,世界!”程序看起来像这样:
#include <iostream>
int main() {
std::cout << "Hello, world!" << std::endl;
}
用于生成随机数和执行时间评估的更复杂的程序如下所示:
#include <iostream>
#include <random>
#include <chrono>
#include <time.h>
int main() {
std::chrono::time_point<std::chrono::system_clock> start, end;
std::tr1::default_random_engine eng(static_cast<unsigned int>(time(NULL)));
std::tr1::uniform_int<int> unif(0, 99);
start = std::chrono::system_clock::now();
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
std::cout << unif(eng) << " ";
}
std::cout << std::endl;
}
end = std::chrono::system_clock::now();
int elapsed_milliseconds = std::chrono::duration_cast<std::chrono::milliseconds> (end - start).count();
std::cout << "Elapsed time: " << elapsed_milliseconds << "ms" << std::endl;
std::cin.get();
return 0;
}
我的意见是这样的代码:
std::tr1::uniform_int<int> unif(0, 99);
或者这个:
std::chrono::time_point<std::chrono::system_clock> start, end;
看起来很丑。当然我可以使用这样的东西:
using namespace std;
using namespace std::tr1;
using namespace std::chrono;
但是这段代码可能会导致一些问题:Why is "using namespace std" considered bad practice?
我无法理解在标准库中创建嵌套命名空间的原因。与名称功能冲突有关的原因只有一个吗?还是别的什么?
对于我自己的项目,我什么时候应该使用自己的命名空间?
【问题讨论】:
-
如果你使用 C++11,你不需要
std::tr1,因为TR1 被合并了。 -
@rici 是的,它可以在没有
std::tr1的情况下工作。我以前不知道这一点。
标签: c++ c++11 namespaces