2016-03-06 96 views
-2

我的程序最初用的是using namespace std;,但是我聽到很多人都說這是不好的編程習慣,所以我想打破這個習慣。我將我的程序中的所有coutendl更改爲std::coutstd::endl;什麼是std ::與cout和endl一起使用?

除了coutendl,什麼使用命名空間std?例如:我的程序中有矢量和字符串;他們使用std::

如果不是太長或太麻煩的話,列表就會很好。

+3

試着編譯代碼,如果缺少一些'std ::',編譯器會說它不能識別這個名字。 – Dialecticus

+0

你可以爲你最常用的結構添加'使用std :: ...',並繼續使用它們,而不用前綴'std'就像'使用std :: cout; cout <<「沒有前綴」;' –

回答

6

例如:我的程序中有矢量和字符串;他們使用std::

是的。向量和字符串是標準庫的一部分。 std命名空間的成員在standard library中。

如果不是太長或太麻煩,列表將會很好。

我不能給你一個長,簡潔的名單。但是我可以告訴你如何找到標準庫的成員。例如,採取您的其他問題。字符串和向量是標準庫的一部分嗎?

http://en.cppreference.com/w/

如果我們去這裏,點擊「字符串庫」,我們可以看到逸岸的不同類型,我們可以在我們的C++程序使用的字符串。這個過程是矢量是相同的,根據「集裝箱庫」部分,我們可以看到vectorlistmap

如果你有一個IDE,你也可以通過你作序聲明查看標準庫的成員std:: -

enter image description here

雖然你必須有一個匹配的頭文件中包含看到標準庫的成員,頭被命名爲你所期望的,

#include <list> 
#include <vector> 
#include <string> 
+0

std ::是一個命名空間,而不是一個庫。請不要混淆這兩個術語。 –

+0

@ H.Guijt https://en.wikipedia.org/wiki/C%2B%2B_Standard_Library _「C++標準庫的功能在std命名空間中聲明。」_。我沒有看到你的觀點。 –

+0

'std'是一個命名空間。這不是圖書館的名稱,你鏈接的文章清楚地解釋了這一點。 –

2

將整個std名稱空間轉儲到您的程序中可能不是最明智的選擇,但我不會因使用std的特定元素而感到困擾。因此,不要編寫using namespace std,您可以使用using std::cout,using std::endl等。在我看來,鑑於大量和大量代碼的資格並不能提供可讀性。

至於什麼是標準,這是一個很長的名單,包括所有的STL。試着編譯一下,看看編譯器在哪裏抱怨。

1

總之:
對於一切在C++標準庫。

這包括數據結構,算法,輸入輸出函數,type_traits,字符串操作,幾乎所有可以在C標準庫中找到的東西......。您可以找到一個列表,例如at cppreference.com

1

幾乎所有由C++標準庫提供的類型和函數都在命名空間std中。粗略地說,這包括但不在其文件名中.h標準頭一切 - 像<vector><iostream>(其帶來std::cout),<string>std::string<algorithm>(標準算法),和所有其他的標準C++頭文件。它不包括C標準庫(<stdio.h><stdlib.h>等),儘管它們在C++標準庫(<cstdio>,<cstdlib>等)中具有等價物,它們將聲明置於命名空間std中。

編寫列表毫無意義。如果您使用的是C++標準庫的任何部分,那麼您將使用命名空間std。因此,C++標準庫的任何引用都是事實清單。

有幾個例外(例如標準頭文件中被指定爲宏的名稱),但這些例外是罕見的。

相關問題