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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
neske
1502 / 869 / 84
Регистрация: 26.03.2010
Сообщений: 2,982
#1

Про хранение данных. - C++

23.02.2012, 19:08. Просмотров 661. Ответов 6
Метки нет (Все метки)

день добрый.
в задаче задается иерархия папок и файлов, то есть корневая, что в ней и т.д.
к примеру -
/andew (корневая)
andrew papka1 papka2 somefile.txt
papka1 somefile1.txt
papka2 papka3
papka3 123.avi

задается корень, а дальше название папки и через пробел что в ней. не обязательно в правильном порядке, т.е. корень можешь задаваться хоть последним.

решил хранить в таком виде -
C++
1
2
3
4
5
6
7
8
class Tree {
public:
    Tree() : parent(NULL) {}
    ~Tree();
    std::string str;
    Tree *parent;
    std::vector <Tree *> sons;
};
раньше я с деревьями не особо работал, поэтому как правильно в деструкоторе уничтожить все дерево, и нужно ли это в этом случае? и как мне считать папки подобным образом?
или есть более лучший способ хранения?

спасибо.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2012, 19:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Про хранение данных. (C++):

Киносеанс - хранение данных, замена данных, добавленных новых - C++
Вообщем задача : На киносеанс популярного кинофильма осуществляетсябронирование билетов. С помощью списка организовать продажу N билетов....

Хранение данных - C++
Есть объекты, у которых есть свои переменные. Но не всегда эти объекты используются. Где лучше хранить характеристики этих объектов?...

Хранение данных - C++
Пробую написать небольшую рпгшку на С++ + SDL и возникла нужда где-то хранить кучу потенциальной информации, начиная с описания карты,...

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

хранение данных в файле - C++
Народ, помогите, пожалуйста, у меня есть программка, нужно сделать реализацию хранения данных в файле (.txt) при открытии - вся информация...

Хранение статистических данных - C++
Здравствуйте. Пишу сниффер сетевого трафика. Сканирую проходящий трафик с помощью winsock2. Получаю пакеты. Задача стоит как-то...

6
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
23.02.2012, 19:58 #2
Какова окончательная цель? Как именно вы хотите хранить?(Чтобы сохранялась иерархия)
1
neske
1502 / 869 / 84
Регистрация: 26.03.2010
Сообщений: 2,982
23.02.2012, 20:08  [ТС] #3
ну корневая папка это вершина дерева, далее от вершины узлы, это то, что находится в папке и т.д.
суть задачи в том, чтобы "реализовать мини - эмулятор консоли, команды cd, ls, echo".
cd name - перейти из текущей в папку name, затем вывести путь.
ls - вывод содержимого файла
echo text - вывести text на экран.

вот конечная цель.
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
23.02.2012, 21:49 #4
Несмотря на то, что каталоги по сути тоже файлы, то можно сделать так:
C++
1
2
3
4
5
6
struct node
{
   std::string name; // Имя каталога или файла
   std::vector<node*> next; // Ссылки на вложенные каталоги и файлы
// Если первый элемент вектора == NULL, то это файл, иначе каталог
}
Я бы сделал как-то так.

Добавлено через 1 минуту
Цитата Сообщение от neske Посмотреть сообщение
cd name - перейти из текущей в папку name, затем вывести путь.
Необходимо помнить текущий каталог.

Добавлено через 42 секунды
Цитата Сообщение от neske Посмотреть сообщение
ls - вывод содержимого файла
C++
1
std::copy(...); // Предполагаю, догадаетесь как вывести содержимое векторы
1
neske
1502 / 869 / 84
Регистрация: 26.03.2010
Сообщений: 2,982
23.02.2012, 21:56  [ТС] #5
go, спасибо.
но мне кажется в структуру надо добавить указатель на родителя, т. к. в задаче при команде cd нужно еще полный путь до новой директории выводить.

и как сделать сам ввод данных, на простом примере -
/root
root dir1 dir2

C++
1
2
3
node nd, *cur;
// создали вершину root, cur сейчас указывает на root.
// как правильно добавить dir1 и dir2 в вектор указателей вершины root?
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
23.02.2012, 22:08 #6
Цитата Сообщение от neske Посмотреть сообщение
но мне кажется в структуру надо добавить указатель на родителя,
Для возврата на одну директорию выше? Не думал об этом.

Цитата Сообщение от neske Посмотреть сообщение
// как правильно добавить dir1 и dir2 в вектор указателей вершины root?
Ума не приложу, как именно вам необходимо создавать каталоги и файлы в них. Я бы реализовал упрощенный вариант mkdir и cat.
0
neske
1502 / 869 / 84
Регистрация: 26.03.2010
Сообщений: 2,982
23.02.2012, 23:48  [ТС] #7
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
получилось сделать так, работает -
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
#include <iostream>
#include <string>
#include <vector>
 
class Tree {
public:
    Tree() : parent(NULL) {}
    void add(std::string str) {
        Tree *temp = new Tree;
        temp->name = str;
        temp->parent = this;
        sons.push_back(temp);
    }
 
    void ls() {
        for(int i = 0; i < sons.size(); ++i)
            std::cout << sons[i]->name << " ";
    }
 
    std::string name;
    Tree *parent;
    std::vector <Tree *> sons;
};
 
int main() {
    Tree tree, *cur;
    tree.name = "root";
    cur = &tree;
 
    cur->add("dir1");
    cur->add("dir2");
    cur->ls();
 
    return 0;
}
Добавлено через 5 минут
Хотя, если не ошибаюсь, в этой задаче вообще можно не заморачиваться с деревом.
0
23.02.2012, 23:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.02.2012, 23:48
Привет! Вот еще темы с ответами:

Хранение данных в файле - C++
Допустим есть две программы - A и B. Я запускаю программу A, делаю там дела и в результате получаю объект какого-нибудь пользовательского...

Разнообразное хранение данных - C++
Доброго времени суток. Решил потренироваться в программировании и нашел неплохую задачу. Суть в том, чтобы обрабатывать данные о студентах,...

Хранение данных в программе - C++
Задача : Информация о расходе средств по университету (для бухгалтерии), хранится в следующем виде: фамилия подотчётного лица,...

Хранение данных в vector'e - C++
У меня есть vector&lt;vector&lt;int&gt;&gt; следующего вида: &lt;1, 2, 3, 4, 5, 6, 7&gt;, где число - номер соответствующего вектора. Скажем я хочу удалить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru