C ++ Структуры данных API Вопросы - PullRequest
2 голосов
/ 03 августа 2010

Какая библиотека C ++ предоставляет API структур данных, которые в максимально возможной степени совпадают с предоставляемыми java.util. *. В частности, я ищу следующие DS и следующие служебные функции: -

**DS**: Priority Queue, HashMap, TreeMap, HashSet, 
    TreeSet, ArrayList, String most importantly. 
**Utility**: Arrays.* , Collections.*, Regex, FileHandling etc.
    and other converters and algorithms like Binary Search, Sort, NthElement etc.

Я предполагаю, что Boost, возможно, сможет сделать все это, но я нахожу это слишком громоздким и нетривиальным, чтобы добавить его в проект, особенно, когда я хочу быстро начать что-то и когда хотя код потребовалось бы все эти структуры данных, код в целом не будет таким огромным, чтобы оправдать затрачивание больших усилий на настройку библиотек.

Примером может быть, если кто-то должен написать программу на C ++ для выполнения алгоритма сетевого потока для школьного задания. Я уверен, что мог бы придумать лучшие примеры, но этот на моей голове.

Спасибо Аджай

1 Ответ

6 голосов
/ 03 августа 2010

Все эти контейнеры доступны в той или иной форме в SC ++ L:

  • Priority Queue std :: priority_queue (на самом деле это контейнер адаптер , а не сам контейнер - то есть он работает "поверх" другого контейнера, обычно std::vector или std::deque.
  • HashMap std :: unordered_map (или если ваш компилятор не поддерживает C ++ 0x, есть boost::unordered_map)
  • TreeMap std :: map
  • HashSet иTreeSet в основном совпадают с HashMap и TreeMap, за исключением того, что ключ и значение - это одно и то же, но есть также std::unordered_set и std::set. std :: vector
  • String является почтенным std :: string . Многие функции, которые вы получаете в классе Java String, можно найти вбиблиотека Boost.Strings .

Не бойтесь настраивать усиление. По моему опыту, вы устанавливаете его один раз, а затем используете его снова и снова во всехваши проекты. Также всеБиблиотеки, о которых я упоминал выше, библиотеки только для заголовков .Это означает, что вам на самом деле не нужно собирать / устанавливать какие-либо библиотеки, просто ссылаются на заголовки.

В остальном я не так уверен, так как я не знаю Java все это хорошо.В конце концов, вы не найдете библиотеку, которая «точно так же, как Java, за исключением написанной на C ++», потому что это было бы бессмысленно.Библиотека C ++ написана, чтобы играть в сильные стороны C ++, библиотека Java написана, чтобы играть в сильные стороны Java.Попытка использовать библиотеку, предназначенную для одного языка на другом, для меня не имеет смысла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...