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

Подскажите как написать такое дерево (или БД) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Не видит конструктор http://www.cyberforum.ru/cpp-beginners/thread928740.html
Приветсвую всех! В общем у меня небольшая проблемка, с которой собственными силами разобраться не смог... Только начиню создавать класс , там определены конструктор и деструктор. Но появляется проблема с созданием экземпляра. Компилятор ругается на неразрешенный символ при вызове конструктора. Во вложениях видно что из экземпляра класса конструктор не доступен (1 картинка), а в самом классе...
C++ C++ файлы ifstream/ofstream запись класса Доброе время суток дамы и господа :) необходимо помочь ибо что-то голова не варит )) класс #pragma once #include <iostream> using namespace std; class date { int day; int mounth; int year; http://www.cyberforum.ru/cpp-beginners/thread928727.html
while ( не нажата клавиша) C++
Есть цикл while. Нужно что б цикл заканчивал виполнение если нажата клавиша ... Добавлено через 9 секунд клавиша любая
C++ TiffLib
пытаюсь отрыть файл этой либой, но мне пишет в консоль "Deflate compression support is not configured.". Я так понимаю не нужно пересобрать либу с какимито параметрами. Может кто работал с библиотека отзовитесь плис. П.С. компилятор msvc 2010
C++ Пузырьковая сортировка http://www.cyberforum.ru/cpp-beginners/thread928700.html
Помогите плз. Работаю в Visual Studio 2010. Написал алгоритм пузырьковой сортировки, но когда запускаю вместо одной из цифр выводится самое маленькое из возможных чисел (-858993460). В чем ошибка не знаю. Вот код : #include "stdafx.h" #include <iostream> #include <fstream> using namespace std; int main()
C++ Ошибка на стадии выполнения ptr = ptr; class CObject { friend Parser; // много полей методов, все должны заполняться в парсере } class Parser { CObject * object_ public: подробнее

Показать сообщение отдельно
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
25.07.2013, 21:35     Подскажите как написать такое дерево (или БД)
Насколько я понял вам нужно построить дерево каталогов и файлов? Объясните подробнее...

Вот родил такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <string>
#include <iomanip>
#include <stack>
#include <algorithm>
#include <cstdint>
 
struct Node
{
    Node(const std::string &_name) :
            name(_name),
            next() {}
 
    std::string name;
    std::vector<Node*> next;
 
    ~Node()
    {
        for (auto node : next) {
            delete node;
        }
    }
};
 
auto split(const std::string &str, char delim)
{
    std::vector<std::string> v;
    std::istringstream iss(str);
    std::string token;
    while (std::getline(iss, token, delim))
        v.push_back( std::move(token) );
    return v;
}
 
int main()
{
    setlocale(LC_CTYPE, "");
 
    std::ifstream file("file.txt");
    if (!file.good()) return 1;
 
    auto tree = new Node("");
 
    std::string str;
 
    while ( getline(file, str) ) {
        auto tokens = split(str, '/');
        auto node = tree;
 
        for (auto &s : tokens) {
            auto it = std::find_if( std::begin(node->next), std::end(node->next),
                            [&s](Node *n) { return n->name == s; } );
 
            if (it == end(node->next)) {
                node->next.push_back( new Node(s));
                node = node->next.back();
            } else {
                node = *it;
            }
        }
    }
 
    file.close();
 
    std::stack<std::pair<Node*, int32_t>> q;
    q.push( {tree, -1} );
 
    while ( !q.empty() ) {
        auto p = q.top();
        q.pop();
        std::cout << std::setw(p.second + p.first->name.size() + 1) << p.first->name << std::endl;
        for (auto node : p.first->next)
            q.push( {node, p.second + p.first->name.size()} );
    }
 
    delete tree;
    return 0;
}
если вбить в файл ваши данные, то получим (см. скриншот)
Миниатюры
Подскажите как написать такое дерево (или БД)  
 
Текущее время: 02:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru