2010-03-25 46 views
8

Tôi đã lập trình C++ trong khoảng một năm nay và khi tôi đang tìm kiếm, tôi thấy rất nhiều tham chiếu đến STL.Điểm STL là gì?

Có thể một số người vui lòng cho tôi biết nó hoạt động như thế nào?

và những lợi thế và bất lợi của nó?

cũng cung cấp gì cho tôi qua VCL hoặc MFC borlands?

cảm ơn

+17

Rất có thể bạn đã lập trình C trong một năm và chỉ khám phá C++. Nghiêm túc, C + + mà không có STL bị tê liệt. – Thorsten79

+1

@ Thorsten79: Hoặc, nếu anh ta thực sự không biết STL là gì, anh ta có thể đang sử dụng các lớp chứa, các thuật toán và các trình vòng lặp như là một phần của thư viện chuẩn. STL thích hợp là một thư viện mẫu được phát triển ngay trước khi C++ được chuẩn hóa, và nó được hấp thu vào thư viện chuẩn. –

+0

@Jonathan D, VCL và MFC chủ yếu là các khung công tác GUI. STL là tập hợp các cấu trúc dữ liệu. –

Trả lời

23

Nó Thư viện C++ chuẩn cung cấp cho bạn tất cả các loại container rất hữu ích, chuỗi, các thuật toán để thao tác chúng với, vv

Thuật ngữ 'STL' là lỗi thời IMHO, những gì từng là STL đã trở thành một phần lớn của thư viện chuẩn cho C++.

Nếu bạn đang thực hiện bất kỳ phát triển C++ nghiêm trọng nào, bạn sẽ cần làm quen với thư viện này và tốt nhất là thư viện boost. Nếu bạn chưa sử dụng nó, có lẽ bạn đang làm việc ở mức trừu tượng sai hoặc bạn đang tự ràng buộc bản thân với một tập con nhỏ của C++.

+0

nó mang lại cho tôi những gì hơn VCL hoặc MFC của Microsoft? –

+1

@ Jonathan D: Tính di động, của mã bạn viết cũng như bản thân và kỹ năng của bạn. – Teddy

+11

Jonathan D: Khả năng nhận được một công việc C++. Tuyên bố để biết C++ mà không có khả năng sử dụng STL sẽ nhận được yuo bị từ chối ở cấp độ đầu tiên của bất kỳ cuộc phỏng vấn việc làm nào. –

0

STL có Iterators. Chắc chắn, các bộ sưu tập và các công cụ là hữu ích, nhưng các vòng lặp quyền lực là khổng lồ, và, theo quan điểm khiêm tốn của tôi, làm cho phần còn lại nhợt nhạt trong so sánh.

1

"lợi thế và bất lợi" so với những gì? Để tự viết tất cả mã đó? Không phải là quá rõ ràng rồi sao? Nó có các bộ sưu tập và công cụ tuyệt vời để làm việc với chúng

2

Nó cung cấp các công cụ hữu ích phổ biến cho lập trình viên! Iterator, thuật toán, vv Tại sao lại phát minh ra bánh xe?

0

Wikipedia có một cái nhìn tổng quan tốt: http://en.wikipedia.org/wiki/Standard_Template_Library

Các STL sửa chữa một thiếu hụt lớn của C++ - thiếu một loại chuỗi tiêu chuẩn. Điều này đã gây ra vô số nhức đầu vì đã có hàng ngàn chuỗi triển khai không hoạt động tốt với nhau.

+0

Loại chuỗi trong Thư viện chuẩn không bao giờ là một phần của STL, hoặc ít nhất là STL được thiết kế bởi Stepanov và Lee. –

+0

@Neil Bạn nói đúng. Nó là một phần của Thư viện chuẩn C++ (http://en.wikipedia.org/wiki/C%2B%2B_standard_library), không phải là STL (http://en.wikipedia.org/wiki/Standard_Template_Library). nhưng sau đó tôi nghĩ nhiều người nói "STL" khi họ ngụ ý "Thư viện chuẩn C++". (Thực tế là họ là nhiều người không làm cho họ đúng, tất nhiên.) –

+0

Mặc dù vậy, bạn vẫn tìm thấy rất nhiều thư viện chuỗi trong mã C + +. Hãy nhớ RogueWave, CString + mọi người đã từng nghĩ rằng họ có thể làm tốt hơn? Chưa kể rằng việc đếm tham chiếu trong std :: string không an toàn thread trong nhiều triển khai. –

0

viết tắt của thư viện mẫu chuẩn

Đây là tập hợp các chức năng và lớp học giúp bạn tiết kiệm rất nhiều công sức.

Chúng được thiết kế để sử dụng các mẫu, là nơi bạn xác định hàm, nhưng với việc xác định loại dữ liệu nào nó sẽ hoạt động. Ví dụ:

ví dụ, vectơ nhiều hơn hoặc ít hơn cho phép bạn có mảng động. khi bạn tạo một thể hiện của nó, bạn nói loại bạn muốn nó hoạt động. Điều này thậm chí có thể là kiểu dữ liệu của riêng bạn (lớp).

Thật khó để suy nghĩ, nhưng nó cực kỳ mạnh mẽ và có thể giúp bạn tiết kiệm thời gian.

Đọc ngay bây giờ! Bạn muốn hối tiếc.

3

STL là Thư viện mẫu chuẩn. Giống như bất kỳ thư viện nào, đó là một bộ sưu tập mã giúp cuộc sống của bạn dễ dàng hơn bằng cách cung cấp mã được kiểm tra và mạnh mẽ để bạn có thể sử dụng lại.

  1. Cần một bộ sưu tập (bản đồ, danh sách, vector, vv) họ đang ở trong STL
  2. Cần để hoạt động trên một bộ sưu tập (for_each, sao chép, chuyển đổi, vv,) họ đang ở trong STL
  3. Cần làm I/O, có các lớp học cho điều đó.

Ưu

1, Bạn không cần phải tái thực hiện container tiêu chuẩn (cus bạn sẽ nhận được nó sai anyway)

đọc này book bởi Nicolai M.Josuttis để tìm hiểu thêm về STL, đó là cuốn sách tham chiếu STL tốt nhất hiện có.

0

Nó mang lại cho bạn một từ viết tắt khác để quăng quanh các bữa tiệc cocktail.

Nghiêm túc, hãy kiểm tra tài liệu giới thiệu bắt đầu, ví dụ: với số Wikipedia article on STL.

+3

Các lập trình viên không đi dự tiệc cocktail. Họ đi đến các bên LAN. –

4

STL là viết tắt của Thư viện mẫu chuẩn. Đây là một thư viện được thiết kế chủ yếu bởi Stepanov và Lee mà sau đó đã được thông qua như là một phần của Thư viện chuẩn C++. Thuật ngữ này đang dần trở thành vô nghĩa, nhưng bao gồm các bộ phận của bộ thư viện chuẩn:

  • container (vector, bản đồ vv)
  • lặp
  • thuật toán

Nếu bạn gọi cho mình một C++ lập trình viên, bạn nên làm quen với tất cả các khái niệm này và việc thực hiện Thư viện chuẩn của chúng.

+0

Tin đồn có STL thực sự là viết tắt của "Stepanov và Lee!" (Tin đồn * có * nó, dù sao ...) –