首先,我無法理解C++標準庫或std的結構。例如,「你好,世界!」 PROGRAMM看起來是這樣的:當我應該使用我自己的命名空間?
生成隨機數和執行時間assesment#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?
我無法理解在standrad庫創建嵌套的命名空間的原因。這只是與名稱功能衝突相關的一個原因嗎?或者是其他東西?
對於我自己的項目,我應該使用自己的命名空間嗎?
如果使用C++ 11,則不需要'std :: tr1',因爲[TR1](https://en.wikipedia.org/wiki/C%2B%2B_Technical_Report_1)已合併。 – rici
@rici是的,它沒有'std :: tr1'。我以前不知道這一點。 –