Dưới đây là một thô tương đương:
Dictionary<K,V>
< =>unordered_map<K,V>
HashSet<T>
< =>unordered_set<T>
List<T>
< =>vector<T>
LinkedList<T>
< =>list<T>
.NET BCL (thư viện lớp cơ sở) không có cây đỏ đen (stl map) hoặc hàng đợi ưu tiên (make_heap(), push_heap(), pop_heap()).
Bộ sưu tập .NET không sử dụng "trình lặp" theo cách của C++. Tất cả đều thực hiện IEnumerable<T>
và có thể được lặp lại bằng cách sử dụng câu lệnh "foreach
". Nếu bạn muốn kiểm soát thủ công việc lặp lại, bạn có thể gọi "GetEnumerator()
" trên bộ sưu tập sẽ trả lại IEnumerator<T>
bộ lọc. IEnumerator<T>.MoveNext()
tương đương với "++" trên trình lặp C++ và "Hiện tại" tương đương với toán tử con trỏ ("*").
C# có tính năng ngôn ngữ được gọi là "trình lặp". Tuy nhiên, chúng không giống như "đối tượng lặp" trong STL. Thay vào đó, chúng là một tính năng ngôn ngữ cho phép thực hiện tự động IEnumerable<T>
. Xem tài liệu cho các câu hỏi yield return
và yield break
để biết thêm thông tin.
Nguồn
2009-04-12 00:54:47
Bạn đã tình cờ gặp những gì có lẽ là thiếu sót lớn nhất trên thư viện lớp cơ sở .NET ...Họ đang thiếu rất nhiều container tương đối phổ biến. Và trong khi LINQ làm tốt công việc thay thế các trình lặp C++, nó vẫn không linh hoạt (hoặc hiệu quả) – jalf