簡體   English   中英

為什么我需要包括 <vector> 使用它們?

[英]why do i need to include <vector> to use them?

我是C ++的新手,並試圖弄清楚如何使用vector

更具體地說,我想知道何時需要使用#include<vector> 我之所以這么問,是因為我看過帶有和不帶有#include語句的程序,它們在程序中使用vector

當您看到使用std::vector但未#include <vector> 代碼時該代碼已損壞 期。

在特定的編譯器/標准庫實現/平台/行星上工作可能會“恰好發生”,具體取決於哪些其他“恰好發生”的標准頭文件已經包含了<vector>供其自己使用。 這將不被依賴。

您可能會看到不直接 #include <vector>代碼。 但是,如果您檢查經過預處理的代碼,我相信您會發現該代碼確實包含標頭-但通過其他標頭間接地包含了標頭。

這是脆弱的,您不應該這樣做。 但這並不意味着它不起作用。

vector實際上不是C ++內置的,它只是其標准庫的一部分,如果您使用C ++,則保證可以使用。 vector (或全稱std::vector )本身是用C ++實現的。

通過編寫#include <vector> ,您將告訴編譯器不僅使用您自己的代碼,而且還編譯一個名為vector的文件。 該文件實際上位於硬盤驅動器上的某個位置(如果使用GNU / Linux,則可能位於/usr/include/c++/[GCC_VERSION]/vector )。

您不能在不包含該文件的情況下使用std::vector ,因為編譯器隨后不知道名為std::vector的類。 編譯器只知道C ++ 語言 ,而不是它的標准庫!

如果某些程序使用std::vector而不包括其頭文件,那是因為它們已經包含的某些頭文件在某處具有#include <vector> 這樣做可能有充分的理由(例如,某些C ++課程附帶一個包含所有必要標頭的文件,該文件在前幾節課中使用)。 但是,可能還會有包含vector標准庫頭( iostream某些實現會這樣做)。 依賴於它不是一個好主意,因為它在實現和實現上有所不同,因此您的程序可能在Visual C ++ 2010中工作,但是不能在GNU或Visual C ++的較新版本中編譯。

您需要包括頭文件,才能使用任何類型的數據/功能。 c ++中的所有數據類型和函數都包含在它們自己的庫中。如果不包含該庫,則c ++程序將不知道所使用的內容,因為它甚至不存在它們。

您想和吉姆的狗一起玩,但您不知道吉姆是誰,或狗是什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM