C ++ Builder 2009 - простой список объектов

0

Исходя из Java, я привык к построению структуры данных, что я могу быстро/легко ссылаться, что позволяет мне делать такие вещи, как добавление целых чисел в список, и проверить, есть ли целое число в списке.

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

  • 0
    Посмотрите на все стандартные контейнеры: en.cppreference.com/w/cpp/container Каждый из них имеет свои плюсы и минусы в зависимости от конкретной задачи. В вашем случае кажется, что вы хотите (multi) set или unordered_ (multi) set. Стандартная библиотека должна работать с каждым компилятором c ++.
  • 0
    Я забыл, поскольку вы, похоже, используете старый компилятор (2009), эти контейнеры, помеченные C++11 , не будут вам доступны, включая набор unordered_ (multi).
Теги:
list
c++builder
c++builder-2009

2 ответа

4
Лучший ответ

Вы можете использовать std::vector или std::set. Используйте vector если вы хотите разрешить дубликаты, используйте set, если вы этого не сделаете. Поиск vector также будет значительно медленнее по сравнению с set.

std::vector<int> intCheckList;
std::set<int> intCheckSet;
  • 0
    Меня привлекли к проблеме поддержки клиентов, но я посмотрю на это. Как только я проверю, я приму, если это работает. Спасибо
1

Предложение mattingly890 работало для меня, это просто продолжение, чтобы привести пример того, как я использовал набор, как ссылку для других. Ниже приведен пример кода, который я вставлял в набор и тестировал, чтобы узнать, было ли это значение в наборе. Убедитесь, что #include <set> наверху.

// Test std set
std::set<int> myset;
std::set<int>::iterator it;
myset.insert(10);
myset.insert(20);
myset.insert(30);

it = myset.find(10);
boolean found = it!=myset.end();
if(found)
    MessageDlg("Found 10", mtInformation, TMsgDlgButtons() << mbOK, 0);

it = myset.find(15);
found = it!=myset.end();
if(found)
    MessageDlg("Found 15", mtInformation, TMsgDlgButtons() << mbOK, 0);

it = myset.find(20);
found = it!=myset.end();
if(found)
    MessageDlg("Found 20", mtInformation, TMsgDlgButtons() << mbOK, 0);

Рекомендации:

  • 1
    boolean должен быть bool в c ++, также есть set::count() который будет возвращать 0 или 1 вместо итератора, как find . Это избавит вас от теста против end() и вы сможете напрямую использовать его как условие if.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню