Отображение между stl C++ и контейнерами C#

Когда вы говорите [{"articles" : <whatever>}], квадратные скобки указывают, что эта структура данных является списком, содержащим один элемент, который является словарем. Таким образом, вам нужно что-то вроде:

json_decoded[0]["articles"] = [{"id": filename, "phrases": phrases}]

Я не уверен, что вы на самом деле хотите, чтобы все эти списки были там. Это может быть чище:

keywordJson = {'articles': {'id': filename, 'phrases': phrases}}

И тогда код будет:

json_decoded["articles"] = {"id": filename, "phrases": phrases}
15
задан tato 12 April 2009 в 00:29
поделиться

4 ответа

Вот примерная грубая эквивалентность:

  1. Словарь < => unordered_map
  2. HashSet <=> unordered_set
  3. Список <=> вектор
  4. LinkedList <=> list

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

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

В C # есть языковая функция, называемая «итераторы». Однако они не совпадают с «объектами итераторов» в STL. Вместо этого они являются языковой функцией, которая позволяет автоматически реализовать IEnumerable . Для получения дополнительной информации см. Документацию для выражений доходности и доходности .

примерно эквивалентно оператору указания указателя ("*").

В C # есть языковая функция, называемая «итераторы». Однако они не совпадают с «объектами итераторов» в STL. Вместо этого они являются языковой функцией, которая позволяет автоматически реализовать IEnumerable . Для получения дополнительной информации см. Документацию для выражений доходности и доходности .

примерно эквивалентно оператору указания указателя ("*").

В C # есть языковая функция, называемая «итераторы». Однако они не совпадают с «объектами итераторов» в STL. Вместо этого они являются языковой функцией, которая позволяет автоматически реализовать IEnumerable . Для получения дополнительной информации см. Документацию для выражений доходности и доходности .

21
ответ дан 1 December 2019 в 03:43
поделиться

Вы также можете взглянуть на STL / CLR , то есть

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

1
ответ дан 1 December 2019 в 03:43
поделиться

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

0
ответ дан 1 December 2019 в 03:43
поделиться

Не существует потрясающего прямого сопоставления, поскольку, например, наборы C ++ и сопоставление используют компараторы, тогда как .Net HashSet и Dictionary используйте хеш-коды.

-2
ответ дан 1 December 2019 в 03:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: