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ó?

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 vì nó thuộc về namespace std, hay là thư viện STL gồm <iostream>, <vector>, <string>, <map>, <chrono>

2 Likes

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.

1 Like

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.

1 Like

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.

1 Like

Bạn có thể xem thêm về namespace tại đây: http://vietjack.com/cplusplus/namespace_trong_cplusplus.jsp

1 Like

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 !

1 Like

Chạy nhanh hơn thật à, hay chỉ compile nhanh hơn, bạn giải thích với :sweat:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?