Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Разбор массивов/контейнеров - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Неправильное чтение бинарного файла http://www.cyberforum.ru/cpp-beginners/thread156229.html
программа должна по идее вывести 99.. мне так казалось.. #include <iostream> #include <stdlib.h> #include <stdio.h> using namespace std; int main() {
C++ Вызов методов класса // practice.cpp : main project file. #include "stdafx.h" #include <iostream> #include <iomanip> using namespace std; const int size=20; //======================================== class... http://www.cyberforum.ru/cpp-beginners/thread156201.html
Ошибка сегментации C++
Здравствуйте, написал программу, запускаю- Windows пишет: "обнаружена ошибка. Приложение будет закрыто". Ошибка в функции: bool prov(int re){ int i=0,j=0; bool r; if...
Можно ли использвовать диррективу препроцессора #warning в Visual Studio 2008 C++
Здравствуйте Товарищи ;) Хочу, организовать себе памятку на будущее (чтобы потом поправить код) надумал использовать диррективу препроцессора #warning. НО тут проблема, в компиляторе Visual...
C++ Нахождение площади методом половинного деления http://www.cyberforum.ru/cpp-beginners/thread156118.html
Народ подскажите как находить площадь фигуры методом половинного деления, Вот фигура напрвте как решать метод половинного деления знаю как пишется.
C++ Найти два максимальных числа Задача впринципе легкая, но меня что-то зациклило по полной. Найти два максимальных числа из 10 введенных. БЕЗ массива. Одинаковое число может быть введено только ОДИН раз. Следовательно цикл может... подробнее

Показать сообщение отдельно
Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
28.07.2010, 23:20
похоже человеку сама идея нужна. ассоциативный контейнер строится на красно-черном дереве (одно из самобалансирующихся) например. надо написать класс в котором будут объявлены: корень дерева, класс элементов, методы для доступа (поиска по дереву) - записи и чтения.
Вот например строим массив на бинарном дереве, у каждого узла есть два поля: ключ и данные.
для каждого узла справедливо, что в его левом поддереве находятся узлы с "меньшим" ключом, а в левом поддереве узлы с "большим" ключом. по этому при поиске по такому дереву, если идти с корня, можно каждый раз выбирать по какой ветви мы пойдем искать в зависимости от ключа, что помогает избежать некоторого количества проверок и сэкономить время выполнения поиска.
для того чтобы время поиска по обоим поддеревьям было примерно одинаково пользуются "самобалансирующиеся" деревья. на википедии есть.
C++
1
2
3
4
5
6
7
8
9
10
11
12
template <typename Key,typename Value> class conteiner{
    class TreeNode{
        Key key;
        Value value;
    }
    void addNode(Key &k,Value &v);
    void deleteNode(const Key &k);
    void balance();// функция балансирует дерево, выравнивает левое и праваое поддеревья по глубине.
    public:
    conteiner();
    Value &operator[](const Key &k);
};
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru