Mọi người cho mình hỏi tại sao chỗ String (khoanh đỏ) phía trước lại có std:: , trong khi đó mấy cái kia cũng khai báo biến mà ko có std:: ?
Tại sao phía trước string lại có std:: trong khi dòng khai báo biến khác lại không có?
Tại vì nó thuộc về namespace std, hay là thư viện STL gồm <iostream>, <vector>, <string>, <map>, <chrono>
…
Nếu không có using namespace std
ở đầu file cpp (thường khai báo sau khi #include) thì phải chỉ cho compiler là “string” là class thuộc namespace nào.
Còn int, char, float… là kiểu dữ liệu mặc định thì không cần khai báo.
thế mấy cái kia ko thuộc namespace std hả bạn ?
int, float… là kiểu cơ bản, không thuộc namespace nào hết.
string là class, nó được định nghĩa trong namespace là std.
Nếu mới học thì nên để using namespace std;
ở dưới chỗ #include <...>
cho quen, rồi từ từ sẽ tự hiểu namespace
là gì, vì sao phải để std::
trước string
, vector
, fstream
, …
Mình thấy ko nên using
hết cả 1 namespace, chủ yếu cần std::cin
với std::cout
với std::fstream
thôi.
Mình nói lúc mới học mà, còn làm project này nọ thì không nên dùng vì khả năng trùng hàm.
Còn bình thường thì có thể dùng, vì nhiều trường hợp rất phiền phức nếu trong code sử dụng nhiều containers và các hàm trong thư viện algorithm
.
Bạn có thể xem thêm về namespace tại đây: http://vietjack.com/cplusplus/namespace_trong_cplusplus.jsp
Nó thuộc vè namespace std
Và thêm std như vậy sẽ giúp chương trình chạy nhanh hơn !
Thân !
Chạy nhanh hơn thật à, hay chỉ compile nhanh hơn, bạn giải thích với