Хеш-таблица в C++?

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
55
задан Marcos Bento 5 December 2012 в 11:22
поделиться

9 ответов

При использовании C++ 11 у Вас есть доступ к <unordered_map> и <unordered_set> заголовки. Они обеспечивают классы std::unordered_map и std::unordered_set .

при использовании C++ 03 с TR1 у Вас есть доступ к классам std::tr1::unordered_map и std::tr1::unordered_set, с помощью тех же заголовков (если Вы не используете GCC, в этом случае заголовки <tr1/unordered_map> и <tr1/unordered_set> вместо этого).

Во всех случаях, существуют соответствующий unordered_multimap и unordered_multiset типы также.

78
ответ дан Tony Delroy 7 November 2019 в 07:19
поделиться

Если у Вас уже нет unordered_map или unordered_set, они - часть повышение .
Вот документация для оба .

16
ответ дан Mark Ransom 7 November 2019 в 07:19
поделиться

Существует объект hash_map, как многие здесь упомянули, но это не часть stl. Это - расширение SGI, поэтому при поиске чего-то в STL я думаю, что Вы являетесь неудачливыми.

3
ответ дан Craig H 7 November 2019 в 07:19
поделиться

Visual Studio имеет класс stdext::hash_map в заголовке <hash_map>, и gcc имеет класс __gnu_cxx::hash_map в том же заголовке.

2
ответ дан ypnos 7 November 2019 в 07:19
поделиться

См. станд.:: hash_map от SGI.

Это включено в распределение STLPort также.

1
ответ дан Adam Tegen 7 November 2019 в 07:19
поделиться

hash_map также поддерживается в GNU libstdc ++ .

Dinkumware также поддержки это, что означает, что много реализаций будет иметь hash_map (я думаю, даже Visual C++ поставляет с Dinkumware).

1
ответ дан Ben Collins 7 November 2019 в 07:19
поделиться

Если Вы имеете расширения TR1 в наличии для yor компилятора, используйте тех. В противном случае boost.org имеет версию, это весьма схоже за исключением станд.:: пространство имен. В этом случае вставьте объявление использования, таким образом, можно переключиться на станд.:: позже.

1
ответ дан MSalters 7 November 2019 в 07:19
поделиться
-1
ответ дан Dima 7 November 2019 в 07:19
поделиться

станд.:: tr1:: unordered_map, в <unordered_map>

если Вы не имеете tr1, получаете повышение и используете повышение:: unordered_map в <boost/unordered_map.hpp>

2
ответ дан rlbond 7 November 2019 в 07:19
поделиться
Другие вопросы по тегам:

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