我的程序最初用的是using namespace std;
,但是我聽到很多人都說這是不好的編程習慣,所以我想打破這個習慣。我將我的程序中的所有cout
和endl
更改爲std::cout
和std::endl;
。什麼是std ::與cout和endl一起使用?
除了cout
和endl
,什麼使用命名空間std
?例如:我的程序中有矢量和字符串;他們使用std::
?
如果不是太長或太麻煩的話,列表就會很好。
我的程序最初用的是using namespace std;
,但是我聽到很多人都說這是不好的編程習慣,所以我想打破這個習慣。我將我的程序中的所有cout
和endl
更改爲std::cout
和std::endl;
。什麼是std ::與cout和endl一起使用?
除了cout
和endl
,什麼使用命名空間std
?例如:我的程序中有矢量和字符串;他們使用std::
?
如果不是太長或太麻煩的話,列表就會很好。
例如:我的程序中有矢量和字符串;他們使用
std::
?
是的。向量和字符串是標準庫的一部分。 std
命名空間的成員在standard library
中。
如果不是太長或太麻煩,列表將會很好。
我不能給你一個長,簡潔的名單。但是我可以告訴你如何找到標準庫的成員。例如,採取您的其他問題。字符串和向量是標準庫的一部分嗎?
如果我們去這裏,點擊「字符串庫」,我們可以看到逸岸的不同類型,我們可以在我們的C++程序使用的字符串。這個過程是矢量是相同的,根據「集裝箱庫」部分,我們可以看到vector
,list
,map
等
如果你有一個IDE,你也可以通過你作序聲明查看標準庫的成員std::
-
雖然你必須有一個匹配的頭文件中包含看到標準庫的成員,頭被命名爲你所期望的,
#include <list>
#include <vector>
#include <string>
std ::是一個命名空間,而不是一個庫。請不要混淆這兩個術語。 –
@ H.Guijt https://en.wikipedia.org/wiki/C%2B%2B_Standard_Library _「C++標準庫的功能在std命名空間中聲明。」_。我沒有看到你的觀點。 –
'std'是一個命名空間。這不是圖書館的名稱,你鏈接的文章清楚地解釋了這一點。 –
將整個std名稱空間轉儲到您的程序中可能不是最明智的選擇,但我不會因使用std的特定元素而感到困擾。因此,不要編寫using namespace std
,您可以使用using std::cout
,using std::endl
等。在我看來,鑑於大量和大量代碼的資格並不能提供可讀性。
至於什麼是標準,這是一個很長的名單,包括所有的STL。試着編譯一下,看看編譯器在哪裏抱怨。
總之:
對於一切在C++標準庫。
這包括數據結構,算法,輸入輸出函數,type_traits,字符串操作,幾乎所有可以在C標準庫中找到的東西......。您可以找到一個列表,例如at cppreference.com
幾乎所有由C++標準庫提供的類型和函數都在命名空間std
中。粗略地說,這包括但不在其文件名中.h
標準頭一切 - 像<vector>
,<iostream>
(其帶來std::cout
),<string>
(std::string
)<algorithm>
(標準算法),和所有其他的標準C++頭文件。它不包括C標準庫(<stdio.h>
,<stdlib.h>
等),儘管它們在C++標準庫(<cstdio>
,<cstdlib>
等)中具有等價物,它們將聲明置於命名空間std
中。
編寫列表毫無意義。如果您使用的是C++標準庫的任何部分,那麼您將使用命名空間std
。因此,C++標準庫的任何引用都是事實清單。
有幾個例外(例如標準頭文件中被指定爲宏的名稱),但這些例外是罕見的。
試着編譯代碼,如果缺少一些'std ::',編譯器會說它不能識別這個名字。 – Dialecticus
你可以爲你最常用的結構添加'使用std :: ...',並繼續使用它們,而不用前綴'std'就像'使用std :: cout; cout <<「沒有前綴」;' –