Сопоставление между контейнерами stl C++ и C#

может кто-то указать хорошее сопоставление между обычными контейнерами STL c++, такими как vector, list, map, set, multimap... а универсальные контейнеры C#?

Я привык к первым, и каким-то образом я привык выражать алгоритмы в терминах этих контейнеров. Мне трудно найти эквивалент C# для них.

спасибо!

4 ответов


здесь грубо эквивалентности:

  1. Dictionary<K,V> unordered_map<K,V>
  2. HashSet<T> unordered_set<T>
  3. List<T> vector<T>
  4. LinkedList<T> list<T>

в .NET BCL (библиотека базовых классов) нет красно-черных деревьев (карта stl) или очередей приоритетов (make_heap (), push_heap (), pop_heap ()).

коллекции .NET не используют "итераторы" так, как это делает C++. Все они реализуют IEnumerable<T>, и может быть повторен с помощью"foreach заявление". Если вы хотите вручную управлять итерацией, вы можете вызвать "GetEnumerator() " о коллекции, которая вернет IEnumerator<T> принтер Objet. IEnumerator<T>.MoveNext() примерно эквивалентно " ++ "на итераторе C++, а" Current "примерно эквивалентен оператору указателя-почтения ("*").

C# имеет функцию языка, называемую "итераторы". Однако они не совпадают с "объектами итератора" в STL. Вместо этого, они являются языком функция, которая позволяет для автоматической реализации IEnumerable<T>. См. документацию для yield return и yield break заявлений для получения дополнительной информации.


вы также можете взглянуть на STL / CLR что это

... в упаковке стандартная библиотека шаблонов (STL), a подмножество стандартной библиотеки C++ , для использования С C++ и .NET Framework общеязыковая среда выполнения (СБРОС.) С STL / CLR вы можете использовать все контейнеры, итераторы и алгоритмы STL в управляемом окружающая среда.

кроме того, имейте в виду, что вы можете скомпилировать существующий код C++ / STL с помощью / clr флаг.


этот проект SorceForge выглядит как интересный ресурс для того, что вы ищете.


нет потрясающего прямого отображения, так как, например, c++ set и map используют компараторы, тогда как .Net HashSet и словарь используют хэш-коды.